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