我在模块化 Silverlight 应用程序中使用 PRISM 和 MVVM。我仍在尝试找出以 MVVM 方式进行交互的正确方法,并且由于不同的原因,PRISM 和示例提供的两种方法不是我喜欢的。
方法一(PRISM):使用不同区域的适配器。基本上,它涉及容器上的附加属性并将 View 注入(inject)区域。这几乎 100% 有效,但这种方法的负面影响是没有很好的方法来传达结果。我可以使用 EventAggregator,但在交互完成时用数据引发事件感觉有些不对劲。
方法2(PRISM):使用InteractionRequest。这涉及到触发操作和一些我必须在每个 View 上重复的大型样板 XAML。
我正在考虑自己创建一些东西,这需要创建我自己的控件,这些控件必须添加到每个 View 中,但只有很少的 XAML 和某种我可以将此控件绑定(bind)到的 IPopupService。我可以通过 PopupService 传递所有需要的数据,但为了真正使 POPUP Action 发生 - 我需要在这个控件上调用方法,这在 MVVM 中分崩离析
我想知道如何在 View 不应该知道 VM 的 MVVM 中调用控制方法?
最佳答案
View 没有选择,但要注意 VM,因为它绑定(bind)到它。
您可以通过运行时实现来定义某种服务,该实现将与 UI 交互,而设计/测试/调试实现则执行其他操作。您还可以在 VM 层中发布一些事件,由 View 层决定如何解释。
关于c# - 使用 MVVM 模式在自定义控件或 UserControl 上调用方法的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8089805/