小背景:我從一個數據庫中加載一個WPF UI,該數據庫存儲在一個屬性表(控制類型,標籤,邊距等)中,我加載到一個類中,我調用了ControlPresenter。基本上,我將ControlPresenter設置爲ContentPresenter的DataContext,並使用TemplateSelector來選擇要加載的控件類型。 DataTemplate(s)將它們的屬性加載到ControlPresenter公開的DependencyProperties之外。如何實現「傳遞」DataBinding?
這一切都非常有效。當我嘗試在其他演示者(具有實現INotifyPropertyChanged的常規屬性)中將數據綁定到這些控件時(例如,TextBox的Text屬性爲演示者的Name屬性),我遇到的問題就出現了。該控件的DataContext是關聯的ControlPresenter,因此我不能直接綁定到其他演示者,並且我無法在同一個依賴項屬性上設置兩個綁定(我無法將控件和期望的演示者屬性綁定到同一個DP) 。
可能的解決方案:
- 我可以轉換所有其他主持人的使用移民(非常耗時而且容易導致與繼承問題)
- 我就可以使用兩個檢測點爲每個屬性我想要通過並嘗試通過更改通知將它們綁定在一起
這兩個看起來有問題並且容易打破,所以我希望別人提出了更好的s olution。
編輯:我想出了一個相當不錯的解決方案(見下文)。感謝大家看到這個,如果你想出一個比我更好的方法,請讓我知道。
嗯,我得看看我是否可以得到選項3號的工作。 – 2009-04-16 13:36:30