2010-10-20 120 views
1

因此,我有一個名爲「Class1」的項的ObservableCollection,而 Class1有一個名爲「ID」的屬性。更新基於組合框選擇的Observable集合

我使用WPFToolkit中的datagrid並綁定到這個集合。 在datagrid中是一個組合框列,我將它的ItemsSource綁定到該類的ID屬性。

在這一點上,一切都很好,一切都應該填充。我想要做的是修改ObservableCollection以反映在ComboBox中選擇的值。

我已綁定到SelectedItemBinding的組合框一個ValueConverter如下:

SelectedItemBinding="{Binding Path=ID, Converter={StaticResource IDConverter}} 

什麼是最好的(即:WPF批准的方法)修改集合的?調用IDConverter ConvertBack()方法時,我得到相應的Class1實例,但無法從ValueConverter訪問Observable集合,也無法訪問Datagrid中的SelectedIndex值。

我可以用指向我的集合的指針創建一個類作爲靜態資源,並將其作爲一個ConverterParameter傳遞,但這似乎有點怪誕,我假設必須有一些使用數據綁定來實現這一點的更清晰的方法。

+0

所以是當您修改ID,它不反映在數據網格中的問題?或者當您修改數據網格中的值時,它並不反映在其他地方 – TerrorAustralis 2010-10-26 05:13:36

回答

0

爲了記錄,一個簡單的解決方案是創建一個本地資源,並引用您希望修改爲依賴項屬性的集合。然後,您可以將其作爲ConverterParameter傳遞並通過ConvertBack()接口方法訪問它。

需要注意的是:當您對集合進行更改並且失去焦點時,很可能會遇到DeferRefresh異常。 一個很好的修復發現在這裏: http://social.msdn.microsoft.com/Forums/en/wpf/thread/187b2b8f-d403-4bf3-97ad-7f93b4385cdf

相關問題