1

ViewModel からデータをグラフにマップしようとしています。バインディングを設定し、オブジェクトを設定しましたが、何らかの理由でデータが表示されません。私が間違っていることを検証していただけますか?ありがとう!

モデル ファイルを表示:

QueryableCollectionView qcv;
public QueryableCollectionView Groups
{
    get
    {
        return qcv;
    }
    set
    {
        qcv = value;
    }

}

public RevenueChartViewModel()
{

    List<Revenue> list = new List<Revenue>
    {
        new Revenue{Rev = 10, Category = 1, Date = DateTime.Today.AddDays(1)},
        new Revenue{Rev = 20, Category = 1, Date = DateTime.Today.AddDays(3)},
        new Revenue{Rev = 30, Category = 2, Date = DateTime.Today.AddDays(6)},
    };

    qcv = new QueryableCollectionView(list);
    qcv.GroupDescriptors.Add(new GroupDescriptor() { Member = "Category" });
}

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" 
                          xmlns:telerikChart="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Charting"
             xmlns:telerikCharting="clr-namespace:Telerik.Windows.Controls.Charting;assembly=Telerik.Windows.Controls.Charting"
             xmlns:telerikControls="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls">

    <UserControl.DataContext>
        <local:RevenueChartViewModel/>
    </UserControl.DataContext>
    <Grid>
        <telerikChart:RadChart x:Name="radChart1">
            <telerik:Series DataSeries="{Binding Groups}">

            </telerik:Series>
            <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>
        </telerikChart:RadChart>

    </Grid>
</UserControl>
4

1 に答える 1

0

データの更新を気にしない場合、別の場所からデータを表示するだけの場合は、データコンテキストの初期化をコンストラクターに移動することをお勧めします。これは、ビューの準備ができた後に発生し、グループを取得せずに取得しますINotifyPropertyChanged を実装する必要があります。コレクションを変更する必要がある場合でも、バインディングが設定されるとコレクションが CollectionChanged イベントを発生させるため、これで十分です。

于 2013-02-24T17:18:36.650 に答える