我是MVVM的新手。目前我所有的代碼都是以鏈接到XAML的.cs文件編寫的。我想切換到MVVM,但遇到困難。我將嘗試解釋爲什麼:切換到MVVM問題
我有很多不同的圖表控件和輸入數據,以.cs文件中指定的方式直接訪問Chart對象並使用它的屬性programaticaly爲我的圖表添加點。
例子:
foreach (var group in qcv.Groups)
{
AreaSeries areaSeries = new AreaSeries();
areaSeries.CombineMode = Telerik.Charting.ChartSeriesCombineMode.Stack;
areaSeries.ValueBinding = new PropertyNameDataPointBinding("Rev");
areaSeries.CategoryBinding = new PropertyNameDataPointBinding("Date");
areaSeries.ItemsSource = group as IEnumerable;
RadChart1.Series.Add(areaSeries);
}
但只要我切換到MVVM RadChart1
對象變得不可訪問的視圖模型文件。我怎樣才能讓它在ViewModel類中可見,或者你可以建議更好的方法,我怎樣才能得到該對象,併爲我的圖表提供輸入而無需更改我的代碼?
我的XAML文件:
<UserControl x:Class="FrontEnd.RevenueChart"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:FrontEnd"
mc:Ignorable="d" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" HorizontalAlignment="Stretch" >
<UserControl.DataContext>
<local:RevenueChartViewModel/>
</UserControl.DataContext>
<Grid>
<telerik:RadCartesianChart HorizontalAlignment="Stretch" x:Name="RadChart1" Palette="Metro" Zoom="10,1">
<telerik:RadCartesianChart.HorizontalAxis>
<telerik:CategoricalAxis/>
</telerik:RadCartesianChart.HorizontalAxis>
<telerik:RadCartesianChart.VerticalAxis>
<telerik:LinearAxis/>
</telerik:RadCartesianChart.VerticalAxis>
<telerik:RadCartesianChart.Behaviors>
<telerik:ChartPanAndZoomBehavior ZoomMode="Both">
</telerik:ChartPanAndZoomBehavior>
</telerik:RadCartesianChart.Behaviors>
</telerik:RadCartesianChart>
</Grid>
</UserControl>
嗨!我現在無法整合一個例子,但請看看這裏:http://www.telerik.com/help/silverlight/radchart-how-to-mvvm-support.html,這會有幫助嗎?讓我知道這是否適合你! MVVM是def。要走的路 – 2013-02-24 02:02:03
虹膜,謝謝你的回答。我現在正在研究這個例子,我會試着弄清楚那裏發生了什麼。謝謝! – 2013-02-24 02:54:28