我即将使用由不同团队(在同一家公司)开发的用户控件,对于我们正在开发的应用程序,我们试图描述XAML中的所有数据绑定。
现在,如果我使用第三方用户控件,我应该期望它们为我的代码提供带钩子的基本ViewModel,还是应该编写代码将用户控件绑定到我选择的ViewModel?
干杯
AWC
答案 0 :(得分:3)
这取决于UserControl的范围。如果它特定于应用程序并且在其他地方不太可能有用,那么是的,应该提供公共ViewModel。
但是,在希望控件可重复使用的情况下,公共ViewModel可能不太有用。 控件可以在内部使用ViewModel ,但这应该保密。然后,宿主应用程序以与任何其他WPF控件类似的方式使用该控件,并创建它自己的视图模型以将控件绑定到应用程序。
本质上,ViewModel通常特定于应用程序 - 它专门针对该应用程序的需求而定制。而通用控件公开允许在任何应用程序中使用它们的属性和事件。
答案 1 :(得分:1)
自己编写控制器类。可重用控件不应该知道它使用哪种类型的数据,除非它是专门为它编写的。但那时它不会是非常可重复的:)
答案 2 :(得分:1)
控件作为独立单元提供。如果它内部有自己的viewmodel,它有暴露的钩子,这一切都很棒,但对你而言并不重要,因为你无法直接操作它。
如果您真的觉得有必要,那么您应该为所提供的控件编写自己的viewmodel,因为这会从控制器(您的代码)中抽象出UI(提供的控件)。这是模式的目的之一 - 分离关注点,因此您可以交换任何部分,而对剩余部分的影响最小。
但是话说回来,并不是每个控件都需要自己的viewmodel,而是使用提供的控件作为更大的用户控件的一部分,并为更大的控件编写一个viewmodel。