【问题标题】:WPF - Should a user control be supplied with a ViewModelWPF - 是否应该为用户控件提供 ViewModel
【发布时间】:2009-12-21 10:46:29
【问题描述】:

我将使用由不同团队(在同一家公司)开发的用户控件,并且对于我们正在开发的应用程序,我们正尝试在 XAML 中描述所有数据绑定。

现在,如果我使用第三方用户控件,我应该期望他们为我的代码提供带有挂钩的基本 ViewModel,还是应该期望编写代码将用户控件绑定到我选择的 ViewModel?

干杯

AWC

【问题讨论】:

    标签: wpf model-view-controller user-controls viewmodel


    【解决方案1】:

    这取决于 UserControl 的范围。如果它特定于应用程序并且不太可能在其他地方有用,那么可以,应该提供公共 ViewModel。

    但是,公共 ViewModel 可能在控件预期可重用的情况下不太有用。 控件可能在内部使用 ViewModel,但这应该是私有的。然后宿主应用程序以与任何其他 WPF 控件类似的方式使用该控件,并创建它自己的视图模型以将控件绑定到应用程序。

    本质上,ViewModel 通常是特定于应用程序的 - 它是专门针对该应用程序的需求量身定制的。而通用控件则公开允许在任何应用程序中使用它们的属性和事件。

    【讨论】:

    • 顺便说一句,谢谢你的问题 - 我问自己这个确切的问题并回答你的问题真的帮助我把我的想法直截了当:)
    【解决方案2】:

    自己编写控制器类。可重用控件不应该知道它正在使用哪种类型的数据,除非它是专门为它编写的。但是那样它就不是很可重用了:)

    【讨论】:

      【解决方案3】:

      控件作为独立单元提供。如果它在内部有自己的视图模型并暴露了钩子,那就太好了,但对你来说没关系,因为你不能直接操作它。

      如果您真的觉得有必要,那么您应该为提供的控件编写自己的视图模型,因为这会从控制器(您的代码)中抽象出 UI(提供的控件)。这是该模式的目的之一 - 分离关注点,因此您可以交换任何部分,而对其余部分的影响最小。

      但话虽如此,并不是每个控件都需要自己的视图模型,相反,您可以将提供的控件用作较大用户控件的一部分,并为该较大控件编写视图模型。

      【讨论】:

        猜你喜欢
        • 2011-06-28
        • 2011-01-13
        • 2011-07-26
        • 1970-01-01
        • 1970-01-01
        • 2013-02-23
        • 1970-01-01
        • 1970-01-01
        • 2013-07-04
        相关资源
        最近更新 更多