我已将DataGrid绑定到IEnumerable<对象>。对象具有EntityCollection<Access>属性,名称为Accesses。然后我把这个放进去
<sdk:DataGridTextColumn
Binding="{Binding Path=Accesses, Converter={StaticResource AccessesToTextConverter}}"
Header="Access"/>
一切都很好。但当我在视图模型中将Access对象添加到Accesses时,DataGrid不会刷新。为什么?:)
您正在向IEnumerable集合添加数据网格不会处理的项。绑定到的集合必须实现INotifyCollectionChanged,数据网格才能自动更新。
如果您使用的集合将您的RIA服务结果作为对象集合中的属性,该对象集合被分配为ItemsSource,请确保将CollectionChanged事件连接到对象的PropertyChanged事件,如下所示:
public EntityCollection accesses;
public EntityCollection Accesses
{
get { return accesses; }
set
{
OnPropertyChanged("Accesses");
value.CollectionChanged += (sender, e) => { OnPropertyChanged("Accesses"); };
accesses = value;
}
}
您需要为模式指定TwoWay,以便从代码中更新UI:
<sdk:DataGridTextColumn
Binding="{Binding Path=Accesses, Mode=TwoWay, Converter={StaticResource AccessesToTextConverter}}" Header="Access"/>