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