c# - MVVM ViewModel-View通讯

标签 c# mvvm windows-runtime winrt-xaml

我有一个ListViewPopup,其内容(ButtonsTextBoxes等)根据ListView中选择的内容而动态变化。如果View确定Popup中的内容或应由ViewModel执行,这是合法的吗?我也想问,View是否可以处理ViewModel的事件?

最佳答案

MVVM不是法律-它是一种工具。如果您正在做的事情符合您的目的-它对您有用。如果您问什么是最佳实践-这取决于您为什么首先使用MVVM。

  • 是因为您要编写独立于 View 的测试吗?然后将您的逻辑状态放入 View 模型。
  • 是因为您希望能够在Blend中显示设计时间数据吗?然后将您的逻辑状态放入 View 模型,并定义设计时数据以在设计模式下显示。
  • 是否是因为您希望拥有可维护的代码,这些代码将由MVVM的人们长期维护?将您的逻辑放入 View 模型。
  • 是因为您的应用程序很复杂,并且您希望将关注点分离,所以不同的人将在 View 上工作,而不同的人将在 View 模型上工作。将您的逻辑放入 View 模型。

  • 如果这些都不适用-您可能会很好,只需花一些时间将代码放在代码后面,而不用让MVVM拖累,您就可以花更少的时间来弄清楚。

    如果您的问题是如何使用 View 模型驱动Popup的内容-通常可以结合使用ItemsControls(例如ListViewGridView或可能是自定义的)和ContentControlsItemTemplateSelectorsContentTemplateSelectors的组合来实现确定哪个逻辑根据 View 模型状态显示的 View 。

    还要检查我的Minimalistic MVVM manifesto帖子。

    关于c# - MVVM ViewModel-View通讯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22638393/

    相关文章:

    c# - 如何允许在 ListView/GridView 项控件内进行操作,同时允许在 ListView/GridView 上进行滚动和横向滑动操作?

    C# Toolstrip 导致支持表单增长

    c# - 控制不同的DataContext

    c++ - 如何在 WinRT DLL 中使用 SQLite?

    windows-runtime - ListView 重新排序是否在 Windows 10 RT 应用程序上停止工作?

    c# - 如何将 SwitchCell 文本颜色绑定(bind)到 Xamarin.Forms 中的 View 模型

    c# - RibbonControl 正在拉伸(stretch)图像

    c# - 使用 Scan 为泛型类型自动注册 StructureMap

    C# 从时间戳获取日期

    .net - WPF 绑定(bind)RelativeSource 问题