双向绑定路径=。不会节省

时间:2015-06-13 02:19:05

标签: c# wpf

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包装器呢?

1 个答案:

答案 0 :(得分:1)

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

“愚蠢的包装类”你把你的整数“盒子”称为对象类型,它们是值类型。这允许您添加INotifyPropertyChanged的实现,这是必要的,因为绑定不是ObservableCollection,而是绑定到ObservableCollection中的每个元素。它为绑定系统提供了当您的更改触发源更新时修改整数所需的钩子。

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