0
我有一個ColumnSeries圖表,我想從視圖模型中控制所選項目。我通過將圖表的SelectedItem綁定到視圖模型上的對象來實現此目的。如何從ViewModel爲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>
頁面上有各種元素會強制圖表的數據被重新加載(通過web服務)。當我需要重新加載圖表數據(從視圖模型)時,我想將圖表的SelectedItem設置爲第一個數據點。這似乎起作用,除非圖表不能直觀顯示(默認爲紅色)所選項目。下面是Web服務調用和重置所選項目之後重新加載數據樣本代碼:
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];
}
設置從View模式不會在視覺上展示紅色在圖表上所選項目的SelectedRatingDistribution。有任何想法嗎??
更新: 所以,如果我點擊一欄,圖表正確顯示紅色爲使所選項目:
但如果我設置從視圖模型的SelectedItem,列將不被顯示爲紅色(作爲選擇項)以下
你能設定在比呈現週期較低的調度優先級的'SelectedRatingDistribution'?就像'App.Current.Dispatcher.BeginInvoke(DispatcherPriority.Loaded,new Action(delegate(){SelectedRatingDistribution = RatingsList [0];}));' – Rachel
好評...這讓我朝着正確的方向前進。由於目前在Silverlight中不支持DispatchterPriority,因此我調整了您的解決方案並在以下答案中發佈。謝謝! – tsiorn