2

我在 WPF 上有两个窗口,比如说 window1 和 window2(这个应该是弹出窗口)。

我想要做的是,当单击弹出窗口(window2)中的按钮时,我想在window1中运行方法。我可以通过将 window1 传递给 windows2 来实现这一点,但我认为这不是一种节省内存的方式。

我有关于routedCommand的红色文章,但是很难理解。我正在使用 c# 并感谢任何帮助

谢谢

4

1 回答 1

1

我经常Current在我的MainViewModel(或任何一个 ViewModel)上有一个静态属性,我在 ViewModel 的构造函数中设置了该属性。然后从应用程序中的任何其他地方,我可以得到对相关 ViewModel 的引用。

在视图模型上

    public MainViewModel()
    {
        Current = this;
    }

    public static MainViewModel Current { get; set; }

应用程序中的其他任何地方:

MainViewModel.Current.DoSomething();

路由命令

路由命令通常是数据绑定的,因此命令逻辑取决于它写入的数据上下文。如果 Window1 的 DataContext 是 MainViewModel,而 Window2 的 DataContext 是 SecondViewModel,为了让 Window2 上的按钮在 MainViewModel 上执行命令,您必须引用 MainViewModel 的该实例作为相关按钮的 DataContext。

于 2013-04-22T14:51:58.260 回答