System.NullReferenceException при привязке диаграммы WPFToolkit - PullRequest
0 голосов
/ 26 марта 2012

WPFToolkit сгенерировал исключение, как только моя собственность на модели просмотра содержит данные, но не когда она пуста!

VIEW:

<UserControl x:Class="ChartView"
    xmlns:DV="clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit"
    xmlns:DVC="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
<Grid>
    <DVC:Chart>
        <DVC:Chart.Series>
            <DVC:ScatterSeries ItemsSource="{Binding Data}"
                               DependentValueBinding="{Binding Path=Value}"
                               IndependentValueBinding="{Binding Path=Key}" />
        </DVC:Chart.Series>
    </DVC:Chart>
</Grid>

VIEWMODEL:

public class ChartViewModel  
{
    public ObservableCollection<KeyValuePair<int, int>> Data { get; set; }

    public ChartViewModel()
    {
        Data = new ObservableCollection<KeyValuePair<int, int>>();

        //If I uncomment this, the error is thrown upon binding
        //Data.Add(new KeyValuePair<int, int>(1, 10));
    }
}

Вершина трассировки стека:

at System.Windows.Controls.DataVisualization.Charting.ScatterSeries.UpdateDataPoint(DataPoint dataPoint) in C:\dd\WPF_1\src\wpf\src\ControlsPack\WPFToolkit\DataVisualization\Charting\Series\ScatterSeries.cs:line 179
at System.Windows.Controls.DataVisualization.Charting.DataPointSeriesWithAxes.OnDataPointActualIndependentValueChanged(DataPoint dataPoint, Object oldValue, Object newValue) in C:\dd\WPF_1\src\wpf\src\ControlsPack\WPFToolkit\DataVisualization\Charting\Series\DataPointSeriesWithAxes.cs:line 257
at System.Windows.Controls.DataVisualization.Charting.DataPointSeries.OnDataPointActualIndependentValueChanged(Object sender, RoutedPropertyChangedEventArgs`1 args) in C:\dd\WPF_1\src\wpf\src\ControlsPack\WPFToolkit\DataVisualization\Charting\Series\DataPointSeries.cs:line 1322
at System.Windows.Controls.DataVisualization.Charting.DataPoint.OnActualIndependentValuePropertyChanged(Object oldValue, Object newValue) in C:\dd\WPF_1\src\wpf\src\ControlsPack\WPFToolkit\DataVisualization\Charting\DataPoint\DataPoint.cs:line 657
at System.Windows.Controls.DataVisualization.Charting.DataPoint.OnActualIndependentValuePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) in C:\dd\WPF_1\src\wpf\src\ControlsPack\WPFToolkit\DataVisualization\Charting\DataPoint\DataPoint.cs:line 629

1 Ответ

1 голос
/ 27 марта 2012

Решение было очень надуманным. В моем App.xaml.cs я изменил язык ради локализации (я хотел запятую в качестве десятичной точки), выполнив:

using System.Windows.Markup;
using System.Globalization;


var window = new MainWindowView();
window.Language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag);
window.Show();

Очевидно, что WPFToolkit это не нравится.

...