2011-05-24 77 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