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 get和set,那么更改Binding Path =。到绑定路径=值,它工作正常。
This site在答案中提到它,但不知道为什么。我想知道为什么我自己。如果它是一个INotifyPropertyChanged事件问题,那为什么它适用于普通的getter和setter包装器呢?
答案 0 :(得分:1)
我的基础是我对.NET Framework内部的了解。这是一个有根据的猜测。
“愚蠢的包装类”你把你的整数“盒子”称为对象类型,它们是值类型。这允许您添加INotifyPropertyChanged
的实现,这是必要的,因为绑定不是ObservableCollection
,而是绑定到ObservableCollection
中的每个元素。它为绑定系统提供了当您的更改触发源更新时修改整数所需的钩子。
它比纯值类型的操作慢,但是,如果您以用户界面速度运行,它应该不是一个明显的问题。