希望这已经没有被问到,但我找不到答案。 我在我的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中的项目会正确显示)。 不知道如何解决这个问题。
答案 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。