数据绑定-Silverlight DataGrid列绑定到对象不刷新



我已将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"/>

最新更新