2013-02-24 108 views
1

我想将我的数据从ViewModel映射到图表。我设置了绑定,填充对象,但由于某种原因没有显示数据。你能否验证我做错了什么?谢谢!MVVM绑定不起作用

查看模型文件:

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> 
+2

你没有在你的视图模型中实现INotifyPropertyChanged,你需要设置DataContext的视图。 – ChrisF 2013-02-24 15:29:14

+0

谢谢克里斯,你是什么意思设置DataContext的观点?是否需要INotifyPropertyChanged? – 2013-02-24 15:33:21

回答

0

如果你不关心数据的更新中,你只是从别的地方显示数据的情况下,我会建议只是将datacontext初始化移动到构造函数中,这将在视图准备就绪后发生,它将检索您的组,而不必实现INotifyPropertyChanged。它可能即使集合需要改变,这是非常好的,因为一旦绑定被设置,集合将触发CollectionChanged事件。