列上的WPF DataGrid绑定

时间:2011-07-20 18:08:23

标签: wpf datagrid binding

希望这已经没有被问到,但我找不到答案。 我在我的xaml中将ViewModel设置为DataContext。在这个ViewModel中是List<庄家GT; - 属性。经销商有一些属性应该显示在数据网格中(作为列,但不是全部)。我试图像这样实现它:

<Grid x:Name="myGrid" DataContext="{Binding Source={StaticResource createGameVM}}">
...
   <DataGrid Name="dealerList" AutoGenerateColumns="False" ItemsSource="DealerList">
      <DataGrid.Columns>
         <DataGridTextColumn Header="ID" Width="30"  Binding="{DealerId}" />                        
         <DataGridTextColumn Header="Name" Width="*" Binding="{DealerName}" />                       
      </DataGrid.Columns>
   </DataGrid>
...
</Grid>

在这种情况下,ViewModel中的PropertyChanged为null,因此当DealerList更改时不会更新任何内容。 (但是在设置DataContext之前,DealerList中的项目会正确显示)。 不知道如何解决这个问题。

3 个答案:

答案 0 :(得分:7)

改为绑定到ViewModel上的ObservableCollection<Dealer>。这样,当集合发生变化时,它会自动更新。

答案 1 :(得分:1)

试试这个:

<Grid x:Name="myGrid" DataContext="{Binding Source={StaticResource createGameVM}}">
...
   <DataGrid Name="dealerList" AutoGenerateColumns="False" ItemsSource="{Binding DealerList}">
      <DataGrid.Columns>
         <DataGridTextColumn Header="ID" Width="30"  Binding="{DealerId}" />                        
         <DataGridTextColumn Header="Name" Width="*" Binding="{DealerName}" />                       
      </DataGrid.Columns>
   </DataGrid>
...
</Grid>

答案 2 :(得分:0)

除了使用ObservableCollection之外,您还可以创建自己的派生列表类并实现INotifyCollectionChanged。