2012-07-06 80 views
0

我无法获得listview绑定到ViewModel。我的视图模型的代码如下:WPF绑定tp ViewModel

class MyViewModel : INotifyPropertyChanged 
{ 
    ObservableCollection<MyDataItemViewModel> dataToShow; 

    public ObservableCollection<MyDataItemViewModel> DataToShow 
    { 
     get 
     { 
      return dataToShow; // A breakpoint here is never hit 
     } 
    } 

    public MyViewModel(ObservableCollection<MyDataItemViewModel> toShow) 
    { 
     dataToShow = toShow; // A breakpoint here reveals that there is data 

     RegisterCommands(); 
    } 
... 

我的XAML如下:

<ListView Name="DataView" 
       ... 
       ItemsSource="{Binding MyViewModel.DataToShow}"> 

     <ListView.View> 
      <GridView> 
       <GridViewColumn Header="Number" 
         ... 
         DisplayMemberBinding="{Binding Path=Details.Number}" /> 
       ... 

MyDataItemViewModel类的代码返回称为Details一个公共类,它包含了一些特性,包括Number

屏幕显示正常,但没有任何数据。

+0

已经设置您的视图的DataContext的? – ken2k 2012-07-06 12:05:03

+0

Plz添加代码如何设置datacontext – 2012-07-06 12:05:43

回答

1

试试这个:

ItemsSource="{Binding DataToShow}" 
+0

这工作,谢谢!尽管如此,我还是有点不清楚。我曾经见过这样的数据绑定,即使哪里的类不是静态的。 – 2012-07-06 12:16:45

+0

“ListView”的数据上下文是“MyViewModel”实例。因此,路径'DataContext.DataToShow'是有效的,但'DataContext.MyViewModel.DataToShow'不是,因为'MyViewModel'类没有'MyViewModel'属性。此外,您可以查看Visual Studio输出窗口来查找绑定错误。 – Dennis 2012-07-06 12:28:16