0

私はMVVMを初めて使用します。現在、私のコードはすべて、XAMLにリンクされた.csファイルで記述されています。MVVMに切り替えたいのですが、問題が発生しています。理由を説明しようと思います:

チャートオブジェクトに直接アクセスし、そのプロパティをプログラムで使用してチャートにポイントを追加する方法で、さまざまなチャートコントロールと入力データを.csファイルで指定しています。

例:

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);
}

RadChart1しかし、MVVMオブジェクトに切り替える限り、ViewModelファイルでアクセスできなくなります。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>
4

1 に答える 1

0

ビューモデルからビューコントロールにアクセスすることは、MVVMランドでは大したことではありません。あなたはあなたの考えを逆にする必要があります:ものを追加する代わりに、ものにSeriesバインドSeriesします。sを使用SeriesMappingして、グループを系列に変換するチャートコントロールを取得します。始めるためのちょっとしたコードは次のとおりです。

<telerik:RadCartesianChart HorizontalAlignment="Stretch"
  Palette="Metro" Zoom="10,1"
  Series="{Binding Groups}"><!-- <=== this is the important part -->

  <telerik:RadChart.SeriesMappings>
    <telerikCharting:SeriesMapping LegendLabel="Product Sales">
      <telerikCharting:SeriesMapping.SeriesDefinition>
        <telerikCharting:AreaSeriesDefinition/>
      </telerikCharting:SeriesMapping.SeriesDefinition>
      <telerikCharting:SeriesMapping.ItemMappings>
        <telerikCharting:ItemMapping DataPointMember="XCategory" FieldName="Date"/>
        <telerikCharting:ItemMapping DataPointMember="YValue" FieldName="Rev"/>
      </telerikCharting:SeriesMapping.ItemMappings>
    </telerikCharting:SeriesMapping>
  </telerik:RadChart.SeriesMappings>
  ...
于 2013-02-24T02:24:18.633 に答える