2012-02-12 42 views
0

的ItemsSource:原始數據的一個ObservableCollection。 轉換器:通過在ItemsSource上應用複雜的非線性轉換來生成視圖模型。轉換器輸出是一個普通的列表。我知道設計是錯誤的,我應該創建視圖模型層與NotifyPropertyChanged事件,但這是一個快速原型的東西,我只是希望有一個簡單的技巧,強制每當ItemsSource更新DataGrid重新運行轉換器。時的ItemsSource具有轉換力的DataGrid更新應用

+0

什麼太難了有關將字符串屬性和移動你所擁有的轉換? – Paparazzi 2012-02-12 20:50:40

+0

@BalamBalam,轉換器不是在項目級轉換,而是列表級別,轉換不是簡單的映射。類似的例子是轉換日曆事件的列表,每個人都有一個開始時間和持續時間,爲datetime的列表,每個人都有布爾屬性「的東西在這裏開始」和「事到此爲止」。 – 2012-02-12 21:31:33

回答

0

您可以觸發屬性級別的更改通知時,收集的變化,這就迫使ItemsSource結合進行重新評估。

//Data being the ObservableCollection 
Data.CollectionChanged += (s,e) => OnPropertyChanged("Data"); 
+0

是否將ObservableCollection分配給ItemsSource的「Data」?我應該把這段代碼放到哪裏? – 2012-02-12 21:23:44

+0

@ user986080:如果您允許屬性改變你要重視處理程序的setter方法(你也應該再使用一個名爲方法和賦予屬性以前的實例分離處理程序)。如果屬性的後臺字段是隻讀的(我強烈建議),你可以把它放在擁有類的構造函數中,因爲實例永遠不會改變。 – 2012-02-12 21:26:16

1

來自哪裏的變化到您的收藏 - 一個按鈕?如果它只是一個原型,那麼我會使用List,將一個CollectionView放在它們之間並調用CollectionView.Refresh()來刷新顯式。

與OnPropertyChanged( 「數據」)的溶液;看起來可能會循環。

相關問題