2011-05-24 71 views
0

我已经将DataGrid绑定到IEnumerable < Object>。对象具有EntityCollection < Access>属性,它是名称访问。然后在我把这Silverlight DataGrid列绑定到对象不刷新

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

一切正常。但是当我添加Access对象访问我的viewmodel DataGrid不会刷新。为什么? :)

回答

0

您正在将项目添加到IEnumerable集合,其中datagrid不会执行任何操作。您绑定的集合必须实现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; 
     } 
    } 
+0

我添加的对象直接到是否访问集合。它有INotifyCollectionChanged。 – Sergii 2011-05-24 18:45:26

+0

Thx。我正在使用Ria服务。我认为把所有收藏品放到另一个收藏品的情况并不好。 – Sergii 2011-05-24 18:56:54

+0

您的权利,您应该能够直接将数据网格分配给RIA公开的财产。你在做这个吗?或者你是否分配了包含RIA对象的对象的枚举。确保访问属性在集合更改为属性更改时进行通知。 – Jay 2011-05-24 19:20:41

0

你需要以更新从代码中UI的一两件事,指定为双向模式:

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

对不起 - 我混淆了DataGrid绑定的列绑定。 DataGrid上的ItemsSource绑定是否具有Mode = TwoWay? – Rockdocta 2011-05-25 01:04:25