双向绑定路径=.不会保存
本文关键字:保存 路径 绑定 | 更新日期: 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
中的每个元素进行一个绑定。 它为绑定系统提供了在更改触发源更新时修改整数所需的钩子。
它比纯值类型的操作慢,但是,如果您以用户界面速度运行,则应该不是一个明显的问题。