2015-02-24 91 views
2

我試圖用MVVM在WPF中創建一個簡單的UserControl。現在我需要爲UserControl創建一個依賴屬性,所以我試圖在UserControlViewModel中創建依賴屬性(我不想在代碼隱藏中)。ViewModel應該繼承WPF中的DependencyObject嗎?

爲了創造UserControlViewModel依賴屬性,我需要自DependencyObject繼承。在UserControlViewModel中繼承DependencyObject是否是一個好習慣?也就是說,遵循MVVM來設計UserControl是否是一種好方法?

+1

這是不使用模式MVVM當視圖模型來inherite DependencyObject的一個很好的做法。而是使用INotifyPropertyChanged的 – Coding4Fun 2015-10-27 13:39:21

回答

6

如果你已經創建了你希望他們綁定屬性的自定義控制(如下面的代碼),你不能使用INotifyPropertyChanged,你必須使用一個DependencyObject

<MyUserControl MyDependencyProperty="{Binding PropertyPath}" /> 

但使用DependencyObjects時,你應該記住:

  1. DependencyObjects沒有標記爲可序列。
  2. DependencyObject類覆蓋並密封了Equals()GetHashCode()方法。
  3. DependencyObject具有螺紋親和力 - 它 可以僅在所創建的線程上被訪問。

    • 要查看討論視圖模型看到這個article實施INPC和DP的一個很好的例子MVVM。

    • 欲瞭解更多的INPC VS DP辯論,閱讀this blog