WPF:从viewModel在View中调用方法

Mar*_*mić 8 c# architecture wpf mvvm wpf-controls

我在WPF应用程序中使用AvalonDock,需要保持用户设置的AvalonDock的布局(移动,对接,拆分面板).

执行此操作的功能在控件本身(SaveLayout,RestoreLayout).

这样做的正确方法是什么?

现在,我在mainWindowViewModel上有一个命令,它在创建窗口视图和viewmodel的实例时由应用程序创建.它基本上使relay命令调用一个匿名方法,该方法在视图控件上调用所需的函数.这是有效的,因为应用程序为它创建了窗口和视图模型.

但是,如果某个较低级别的视图和视图模型必须这样做,我将如何处理此问题?如果使用这种方法,我还必须在应用程序级别创建Command并通过viewModels将其发送到需要绑定的位置?在它内部,我必须搜索usercontrol,这是一个视图,然后在其中的avalonDock控件,并在应用程序级别使用它,这是容易出错的.不知何故,它似​​乎很脏......

谢谢!

jbe*_*jbe 3

您可以引入一个接口IView,以便 ViewModel 可以调用 View 上的方法。这样,ViewModel 就不需要了解具体的 View 类,并且仍然可以进行单元测试。

\n\n

WPF 应用程序框架 (WAF)的示例应用程序展示了如何实现这一点。

\n