我有一个绑定到简单对象列表的DataGrid和一个想要设置/取消设置列表中这些对象的选定字段的Checkbox。
下面的代码不起作用。单击全选复选框可更改数据,但不会更新网格。但是,如果我改变了
get => this._ordersToTransmit; 至
get => this._ordersToTransmit.ToList(); 然后更新网格,它将正常工作。
有人能解释一下为什么我需要把ToList()放在那里吗?也许我应该做一些完全不同的事情?
class ViewModel
{
private List<OrderListItem> _ordersToTransmit;
public List<OrderListItem> OrdersToTransmit
{
get => this._ordersToTransmit;
set => this.SetProperty(ref this._ordersToTransmit, value);
}
public bool SelectAll
{
get => this._selectAll;
set
{
this.SetProperty(ref this._selectAll, value);
foreach (OrderListItem item in this._ordersToTransmit)
item.Selected = value;
this.RaisePropertyChanged(nameof(TransmitOrdersViewModel.OrdersToTransmit));
}
}
}<CheckBox Content="Select All" IsChecked="{Binding SelectAll, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<DataGrid ItemsSource="{Binding OrdersToTransmit}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding Selected}" />
</DataGrid.Columns>
</DataGrid>发布于 2020-08-08 02:59:57
您为列表引发了NotifyPropertyChanged,但是列表实际上并没有改变:列表中的项正在改变。
您可以:
https://stackoverflow.com/questions/63307285
复制相似问题