双向绑定路径=.不会保存

本文关键字:保存 路径 绑定 | 更新日期: 2023-09-27 17:56:12

public DataContext
{
  public ObserverableCollection<int> Integers;
}
<DataGrid ItemsSource={Binding Integers, Mode=TwoWay}>
   <DataGrid.Columns>
      <DataGridTextColumn Binding="{Binding Path=., UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
   </DataGrid.Columns>
</DataGrid>

显示所有数字就好了。但是,如果您修改某些内容,这些值永远不会保存。您可以输入999999集合将永远不会更新与该行对应的索引。

如果我做了一个名为 IntegerModel 的愚蠢包装类,并给一个名为"Value"的整数一个 get 和 set,然后将 Binding Path=. 更改为绑定路径=值,它工作正常。

这个网站在回答中提到了它,但不知道为什么。我想知道为什么我自己。如果是 INotifyPropertyChanged 事件问题,那么为什么它适用于普通的 getter 和 setter 包装器?

双向绑定路径=.不会保存

我基于我对.NET Framework内部的了解。这是一个有根据的猜测。

你提到的"愚蠢的包装类"将你的整数(值类型)"盒子"到对象类型中。这允许您添加INotifyPropertyChanged的实现,这是必需的,因为绑定不是对ObservableCollection,而是对ObservableCollection中的每个元素进行一个绑定。 它为绑定系统提供了在更改触发源更新时修改整数所需的钩子。

它比纯值类型的操作慢,但是,如果您以用户界面速度运行,则应该不是一个明显的问题。