Диаграмма набора инструментов WPF и IndependentValueBinding, IndependentValuePath - PullRequest
18 голосов
/ 02 июня 2010

У меня проблема с механизмом построения диаграмм из набора инструментов WPF.

Я не переместил данные в правильную объектную модель, поэтому ItemSource поддерживается DataView.

Первая попытка

<chartingToolkit:ScatterSeries x:Name="TargetSeries" 
  DataPointStyle="{StaticResource TargetStyle}"  
  ItemsSource="{Binding Path=TargetSeriesData}"
  IndependentValueBinding="{Binding Path=TargetSeries_X}" 
  DependentValueBinding="{Binding Path=TargetSeries_X}" />

Это дает сбой, потому что я считаю, что привязки рассматриваются как значения для графика или какое-то несовпадение.

Вторая попытка

<chartingToolkit:ScatterSeries x:Name="TargetSeries" 
  DataPointStyle="{StaticResource TargetStyle}" 
  ItemsSource="{Binding Path=TargetSeriesData}"
  IndependentValuePath="{Binding Path=TargetSeries_X}"
  DependentValuePath="{Binding Path=TargetSeries_X}" />

Этот сбой происходит на этапе инициализации, поскольку свойства Path не поддерживаются свойствами зависимостей и поэтому не могут быть связаны.

Третья попытка

<chartingToolkit:ScatterSeries x:Name="TargetSeries" 
  DataPointStyle="{StaticResource TargetStyle}"  
  ItemsSource="{Binding Path=TargetSeriesData}"
  IndependentValuePath="targetFooXColumnName" 
  DependentValuePath="targetFooYColumnName" />

Теперь это работает! Но я хотел использовать привязку, чтобы переключиться с targetFooXColumnName на targetFooBarXColumnName. Таким образом, это решение приведет к тому, что целый хакерский код переключит путь вручную.

Есть ли способ это исправить? Могу ли я использовать какой-то конвертер, чтобы свойства Binding правильно извлекали данные из столбцов в DataView?

Спасибо, Joel

1 Ответ

0 голосов
/ 30 ноября 2017

Я думаю, что ваше приложение по причине сбоя «вы не переместили данные в правильную объектную модель»

Я могу попробовать Binding в ScatterSeries, чтобы он работал без сбоев: Как

<Grid Name="grid_Sample" Loaded="grid_Sample_Loaded">
    <DVC:Chart Canvas.Top="80" Canvas.Left="10" Name="mcChart"
       Width="400" Height="250"
       Background="LightSteelBlue">
        <DVC:Chart.Series>
            <DVC:ScatterSeries x:Name="TargetSeries" 
                             ItemsSource="{Binding sampleList}"
      IndependentValueBinding="{Binding Path=TargetSeries_X}"
        DependentValueBinding="{Binding Path=TargetSeries_Y}">
    </DVC:ScatterSeries>
        </DVC:Chart.Series>
    </DVC:Chart>
</Grid>

 private void grid_Sample_Loaded(object sender, RoutedEventArgs e)
    {
        sampleList = new ObservableCollection<SampleTest>() { 
            new SampleTest(){TargetSeries_X=20,TargetSeries_Y=50},
        new SampleTest(){TargetSeries_X=25,TargetSeries_Y=60},
        new SampleTest(){TargetSeries_X=30,TargetSeries_Y=50},
        new SampleTest(){TargetSeries_X=40,TargetSeries_Y=60}
        };
        ((ScatterSeries)mcChart.Series[0]).ItemsSource = sampleList; 
    }

В соответствии с Моими знаниями, пожалуйста, попробуйте соответствующую модель для привязки ItemsSource к ScatterSeries.

...