Как установить SelectedItem для диаграммы ColumnSeries из ViewModel - PullRequest
0 голосов
/ 21 июля 2011

У меня есть диаграмма ColumnSeries, где я хочу управлять выбранным элементом из модели представления.Я делаю это, привязывая SelectedItem диаграммы к объекту в модели представления.

    <chartingToolkit:Chart Grid.Row="2" VerticalAlignment="Stretch"  HorizontalAlignment="Stretch" BorderThickness="0" MinHeight="200" Margin="0" x:Name="ratingsChart"  Style="{StaticResource ChartWithoutLegendStyle}">
        <chartingToolkit:Chart.Series>
            <chartingToolkit:ColumnSeries x:Name="chartRatingColSeries" IsSelectionEnabled="True"
                                          SelectedItem="{Binding SelectedRatingDistribution, Mode=TwoWay}"
                                          ItemsSource="{Binding RatingsList}" 
                                          IndependentValueBinding="{Binding RatingName}" 
                                          DependentValueBinding="{Binding NumberOfGoodies}">
            </chartingToolkit:ColumnSeries>
        </chartingToolkit:Chart.Series>
    </chartingToolkit:Chart>

На странице есть различные элементы, которые заставляют данные диаграммы перезагружаться (через веб-сервис).Когда мне нужно перезагрузить данные диаграмм (из модели представления), я хочу установить SelectedItem диаграммы на самую первую точку данных.Похоже, что это работает, ЗА ИСКЛЮЧЕНИЕМ диаграммы не отображается визуально (красным по умолчанию) выбранный элемент.Вот пример кода, который перезагружает данные после вызова веб-службы и сбрасывает выбранный элемент:

private RatingDistribution _selectedRatingDistribution = new RatingDistribution();
        public RatingDistribution SelectedRatingDistribution
        {
            get { return _selectedRatingDistribution; }
            set
            {
                _selectedRatingDistribution = value;
                RaisePropertyChanged("SelectedRatingDistribution");
            }
        }


        private ObservableCollection<RatingDistribution> _lstRatings = new ObservableCollection<RatingDistribution>();
        public ObservableCollection<RatingDistribution> RatingsList
        {
            get { return _lstRatings; }
            set
            {
                _lstRatings = value;
                RaisePropertyChanged("RatingsList");
            }
        }

        private void GetRatingsDistributionCompleted(object sender, GetRatingsDistributionCompletedEventArgs e)
        {
            IsBusy = false;

            RatingsList.Clear();
            foreach (RatingDistribution rd in e.Result)
                RatingsList.Add(rd);

            SelectedRatingDistribution = RatingsList[0];
        }

Установка SelectedRatingDistribution из модели View не будет визуально отображать выбранный элемент на диаграмме красным цветом.Любые идеи ??

Обновление: поэтому, если я нажму на столбец, диаграмма правильно отобразит выделенный элемент красным цветом, как показано ниже: correct behavior

Но если я установил SelectedItem из модели представлениястолбец не будет отображаться красным цветом (как выбранный элемент)

1 Ответ

0 голосов
/ 25 июля 2011

Измененная функция ниже устраняет проблему.

    private void GetRatingsDistributionCompleted(object sender, GetRatingsDistributionCompletedEventArgs e) {
        RatingsList.Clear(); 
        foreach (RatingDistribution rd in e.Result) 
            RatingsList.Add(rd);

        App.Current.RootVisual.Dispatcher.BeginInvoke(new Action(delegate() { SelectedRatingDistribution = RatingsList[0]; }));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...