2013-02-24 114 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事件。