13
我讀的地方設置DataContext = this
在用戶控件的構造函數是不好的做法(雖然找不到)。爲什麼這是不好的做法?什麼是替代方案?WPF用戶控件中的「DataContext = this」有什麼問題?
我讀的地方設置DataContext = this
在用戶控件的構造函數是不好的做法(雖然找不到)。爲什麼這是不好的做法?什麼是替代方案?WPF用戶控件中的「DataContext = this」有什麼問題?
一般來說,當有人使用你的控件時,他們會想要將其數據上下文設置爲他們自己的視圖模型類,並將控件上的屬性綁定到他們的視圖模型上。
如果您開始在控件內部混淆數據上下文,並依賴它設置爲'this',那麼要麼阻止其綁定工作,要麼控件無法按預期工作,因爲您依賴在它不被改變。
假設你有一個用戶控件,它在子控件上有一堆。你可以做的是將子控件的DataContext設置爲你的用戶控件類(或任何你想要的)。這將允許您將這些子控件綁定到用戶控件的屬性,同時仍允許控件的任何用戶將其數據上下文設置爲其視圖模型並綁定到屬性。
謝謝,但有什麼替代? –
@blahblah:我用另一種方式更新了我的答案。 –