我已将DataGrid绑定到IEnumerable<对象>。对象具有EntityCollection<访问>属性,它是名称Accesses。然后在我把这个
<sdk:DataGridTextColumn
Binding="{Binding Path=Accesses, Converter={StaticResource AccessesToTextConverter}}"
Header="Access"/>
一切正常。但是当我在我的viewmodel DataGrid中添加Access对象到Accesses时也没有刷新。为什么? :)
答案 0 :(得分:0)
您正在向IEnumerable集合中添加项目,而datagrid将不会对其执行任何操作。绑定到的集合必须实现INotifyCollectionChanged才能使datagrid自动更新。
如果您使用的集合将您的RIA服务结果保存为对象集合中的属性,并将其指定为您的ItemsSource,请确保将CollectionChanged事件与对象的PropertyChanged事件连接起来,如下所示:
public EntityCollection accesses;
public EntityCollection Accesses
{
get { return accesses; }
set
{
OnPropertyChanged("Accesses");
value.CollectionChanged += (sender, e) => { OnPropertyChanged("Accesses"); };
accesses = value;
}
}
答案 1 :(得分:0)
您需要为模式指定TwoWay才能从代码更新UI:
<sdk:DataGridTextColumn
Binding="{Binding Path=Accesses, Mode=TwoWay, Converter={StaticResource AccessesToTextConverter}}" Header="Access"/>