2
A
回答
4
見my answer to your other question約自定義控件和視圖模型。這裏的簡短版本:
- 自定義控件不應該有視圖模型。
- 請勿設置您自己的控件的數據上下文。這是爲消費者保留的。
- 所有的依賴項屬性應該在MyCustomControl.cs文件中聲明。
- 在你的genric.xaml中使用TemplateBinding,因爲Binding更有效率。
換句話說,邊界或按鈕的視圖模型是什麼?答:他們沒有一個,因爲他們只是控件。 UserControls擁有視圖模型,但控件只是呈現並與您給它們的數據交互(在UserControl中)。對於經驗豐富的MVVM開發人員來說,自定義控件開發可能是最困難的事情:您的反應是製作視圖模型,但這種反射不幸是錯誤的。我知道是因爲我自己犯了這個錯誤。
1
依賴屬性可能會在它們所屬的控件中被拖動。
當在WPF/Silverlight中跟隨MVVM時,常用的方法是將ViewModel設置爲相應View的DataContext。因此,您可以使用XAML中的綁定將自定義的依賴屬性鏈接到ViewModel屬性。
讓我們假設你已經設置ViewMosel到視圖的DataContext:
var view = new UserView
{
DataContext = new UserViewModel { Name = "Custom Name" }
};
public class UserViewModel
{
string Name { get; set; }
}
UserView.xaml:
<TextBlock Text="{Binding Name}" />
0
創建自定義控件時,控件本身是視圖模型。在其上聲明依賴性屬性以公開自定義控件的用戶可以利用的綁定。例如,如果您有時間軸控件,則可能會將控件上的StartDate和EndDate等屬性顯示爲依賴項屬性。您的控件默認模板將使模板綁定到依賴項屬性。然後,您的控件的使用者可能會擁有一個項目時間線視圖模型,以便將其綁定到控件上的屬性。
自定義控件的主要目的是提供易於覆蓋的行爲和默認外觀(通過提供新模板)。希望這可以幫助。
相關問題
- 1. 自定義控件依賴屬性綁定到屬性
- 2. 用戶控件與自定義類型依賴屬性(Bound)
- 3. asp.net自定義控件屬性依賴於另一個屬性
- 4. 添加自定義依賴屬性來控制模板在XAML
- 5. 將BoundingRectangle綁定到自定義控件依賴項屬性
- 6. WPF自定義用戶控件 - 依賴屬性綁定
- 7. Silverlight綁定到自定義控件中的依賴屬性
- 8. 自定義控件依賴項屬性綁定
- 9. 綁定到自定義控件的嵌套依賴項屬性
- 10. 自定義依賴屬性綁定
- 11. 自定義依賴屬性綁定
- 12. 將自定義控件上的新屬性綁定到查看模型
- 13. 如何將自定義控件的依賴項屬性綁定到其視圖模型屬性
- 14. WPF自定義控件依賴屬性setter沒有被調用?
- 15. 從WPF自定義控件依賴屬性錯誤
- 16. WPF ::自定義控件的依賴項屬性不起作用
- 17. WPF自定義控件的依賴項屬性
- 18. Nativescript自定義控件 - 更新依賴項屬性
- 19. WPF。設置自定義控件的依賴關係屬性
- 20. WPF從FindAncestor到依賴項屬性自定義控件的
- 21. 自定義用戶控件的依賴屬性
- 22. 查看模型和依賴注入
- 23. 獲取自定義依賴屬性
- 24. 查看模型,依賴項屬性混淆
- 25. 雙向數據綁定,Silverlight和自定義控件/依賴項屬性
- 26. WPF自定義控件依賴屬性:不能是字符串類型?
- 27. 自定義控件依賴項屬性集合,統計嵌套控件項目
- 28. 結合自定義依賴屬性的寬度的控制
- 29. WPF:MVVM創建自定義依賴屬性的DevExpress控制
- 30. 自定義組件依賴性地獄
加1,這應該是正確的答案 –