Silverlight DataGrid列绑定到对象不刷新

时间:2011-05-24 18:28:24

标签: silverlight data-binding silverlight-4.0 datagrid

我已将DataGrid绑定到IEnumerable<对象>。对象具有EntityCollection<访问>属性,它是名称Accesses。然后在我把这个

    <sdk:DataGridTextColumn
                 Binding="{Binding Path=Accesses, Converter={StaticResource AccessesToTextConverter}}"
                 Header="Access"/>

一切正常。但是当我在我的viewmodel DataGrid中添加Access对象到Accesses时也没有刷新。为什么? :)

2 个答案:

答案 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"/>