我使用MVVM模式,所以我自己的控件包含View和ViewModel。
ViewModel與通過DataContext屬性查看連接。這會造成綁定問題。爲什麼?通過MVVM模式創建UserControl - DataContext並綁定到父項
假設這種情況:
我創建了新的用戶控件 - 例如 - 「SuperTextBox」。它有一個屬性「SuperValue」。
現在我做這樣的事情:
<Window>
<Window.DataContext>
<vm:WindowViewModel/>
</Window.DataContext>
<local:SuperTextBox SuperValue="{Binding Test}"/>
</Window>
我認爲「結合的過程」與Window.DataContext.Test加入SuperTextBox.SuperValue,但沒有,「綁定過程」加入SuperTextBox.SuperValue與SuperTextBox.DataContext。考什麼對我來說是不自然的,誤導性的。
像其他控件「文本框」我可以用上面的方法使用,因爲它們沒有自己的DataContext。
如何使用MVVM模式來創建用戶控件保持自然的結合(到父級控件的DataContext)?
編輯:
我得到了很多答案如何結合的父母,但我知道這點。問題是 - 如何通過MVVM patern(具有ViewModel)創建UserControl並保持自然綁定 - 默認爲父級DataContext。
我想有ViewMoldel而且還可以像這樣綁定:
<local:SuperTextBox SuperValue="{Binding Test}"/>
這可能嗎?
它可能當你創建一個真正的用戶控件與依賴性屬性,如我發佈。但我會編輯我的答案,以顯示另一種「不自然」的方式:) – blindmeis