SciChart® the market leader in Fast WPF Charts, WPF 3D Charts, and iOS Chart & Android Chart Components

1 vote
6k views

Hi,

I am having a problem with two SciChartSurface’s sharing the same ViewModel instance. I am using the Master-Detail View pattern to provide a list of charts (Collection of SciChart surfaces) with continuously updating data from a device) within a Listbox container on the left-hand side. On the right-hand side I provide the current selected chart with extended size and some extra controls.

The visual appearance of the SciChartSurface (shared across both sides) is defined via data template

<Window.Resources>
    <local:WorkspaceViewModel x:Key="WorkspaceViewModel" />
    <DataTemplate x:Key="ChartDataTemplate">
        <Border MinHeight="200">
            <visuals:SciChartSurface DebugWhyDoesntSciChartRender="True"
                                     visuals:ThemeManager.Theme="BrightSpark"
                                     SeriesSource="{Binding ., Mode=TwoWay}">
                <visuals:SciChartSurface.XAxis>
                    <visuals:NumericAxis VisibleRange="0.0, 10.0"
                                         AutoRange="Always" />
                </visuals:SciChartSurface.XAxis>

                <visuals:SciChartSurface.YAxis>
                    <visuals:NumericAxis VisibleRange="-1.0, 1.0"
                                         AxisAlignment="Left"
                                         AutoRange="Always" />
                </visuals:SciChartSurface.YAxis>
                <visuals:SciChartSurface.ChartModifier>
                    <visuals:SeriesValueModifier ReceiveHandledEvents="True"></visuals:SeriesValueModifier>
                </visuals:SciChartSurface.ChartModifier>
            </visuals:SciChartSurface>
        </Border>
    </DataTemplate>
</Window.Resources>

and is used within the ListBox and ContentControl in the following way

<Grid DataContext="{StaticResource WorkspaceViewModel}">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="200*"
                          MinWidth="225"
                          MaxWidth="700" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="375*" />
    </Grid.ColumnDefinitions>

    <GroupBox Grid.Column="0">
        <ListBox x:Name="ListBox"
            SelectedItem="{Binding SelectedChart}"
                 HorizontalAlignment="Stretch"
                 VerticalAlignment="Stretch"
                 ItemsSource="{Binding Charts}"
                 HorizontalContentAlignment="Stretch"
                 ItemTemplate="{StaticResource ChartDataTemplate}" />
    </GroupBox>
    <GridSplitter Grid.Column="1"
                  Width="5"
                  HorizontalAlignment="Right"
                  VerticalAlignment="Stretch"
                  ResizeBehavior="PreviousAndNext" />
    <GroupBox Grid.Column="2">
        <ContentControl x:Name="ContentControl"
            Content="{Binding SelectedChart}"
                        ContentTemplate="{StaticResource ChartDataTemplate}" />
    </GroupBox>
</Grid>

The ViewModel (WorkspaceViewModel) contains two properties:

ObservableCollection<ObservableCollection<IChartSeriesViewModel>> Charts
public ObservableCollection<IChartSeriesViewModel> SelectedChart

So far, so good. Once populated with live chart data, the ListBox displays all charts with live updating of the DataSeries. The issue I encounter is that once a chart in the ListBox is selected, the Detail View gets updated and continues displaying live data updates, but the ListBox entry stops updating. Obviously the sharing of the same instance of IChartSeriesViewModel in two different SciChartSurface views (via the ViewModel property SelectedChart) is causing trouble.

What am I missing here? I am currently using SciChart 3.0.

Many thanks,

Silvio

  • swiedric asked 5 years ago
  • last active 5 years ago
1 vote
7k views

Hello,

I have a scichart and bound to its VM class. Inside this VM there is a Highlights property.

On the MainWindow, I am placing two of this charts with their own VM instance.

The problem is that when the Annotations is bound, it is only drawn on the last chart as shown in the image.

If I manually code in xaml the annotations (no binding) then the annotations are drawn in both charts.

How can I make it work with the binding?

Thanks

  • Miguel Hau asked 5 years ago
  • last active 5 years ago
Showing 51 - 52 of 52 results
This template supports the sidebar's widgets. Add one or use Full Width layout.