問候鄉親們! 我遇到了一個WPF數據綁定問題,我希望你能幫忙。我是新來的WPF,但一個expereienced開發人員(VB 3.0-6.0,C#)。XAML內聯數據綁定不起作用;綁定作品背後的代碼
這裏是場景: 我有一個名爲MasterPartsData的C#項目,其中包含了許多不同類型的部件(電容器,二極管等)的類。它們從一個名爲clsPart的基類繼承而來。我有另一個C#WPF項目,其中包含WPF UserControls(以及一個MainWindow),以直觀地表示存儲在一個單獨的MasterPartsData(MPD)對象中的值。我在usercontrol中創建了一個私有字段,用getter和setter來保存對象。
如果我創建在設定器的結合顯式填充的對象:
_capacitor = value;
Binding binding = new Binding();
binding.Source = _capacitor;
binding.Path = new PropertyPath("C0uf");
this.txtC0uf.SetBinding(TextBox.TextProperty, binding);
(與_capacitor作爲私有對象變量和C0uf爲屬性名) 值正確顯示。
但是我不希望在後面的代碼中明確創建每個綁定。我的首選是在XAML中內聯創建綁定,也許使用指向該對象的DataContext。
不幸的是,我試過的每一個不同的排列都失敗了;該文本框不顯示數據。
我有幾個懷疑: 1)綁定是正確的,但文本框需要刷新。 2)綁定混淆了私有變量和屬性。 3)也許類在不同的項目中定義的事實是造成問題。 4)我生氣了,應該在有人受傷前檢查自己進入庇護所。 :)
任何幫助,您可以提供將不勝感激。我非常樂意添加更多信息,但並不希望將問題與頁面和源代碼頁面混淆起來。
非常感謝您提供的信息!我開始看到ModelView在哪裏發揮作用。在我的情況下,我有一個包含多個其他類的對象。 ModelView本質上給出了層次結構的'平面'視圖,所以XAML只有一個數據上下文來處理。正確? – Falconeer 2010-07-12 16:02:15
或多或少正確,但MVVM模式仍然只是一種模式;在執行該模式的數據綁定合同中沒有任何固有的東西。在層次結構中,您可以爲用戶控件的子元素指定其他數據上下文,這可能會破壞良好的架構理念。對我而言,使ViewModel具有處理數據綁定細節(雙向或單向,以及站點轉換器的地方)的一點並不需要您修改模型中的代碼。 – 2010-07-12 17:36:06