我在WPF上有两个窗口,比如window1和window2(这个应该是弹出窗口)。
我想要做的是,当点击弹出窗口(window2)中的按钮时, 我想在window1中运行方法。 我可以通过将window1传递给windows2来实现这一点,但我认为这不是一种节省内存的方式。
我有关于routedCommand的红篇文章,但很难理解。 我正在研究c#,感谢任何帮助
谢谢
答案 0 :(得分:1)
我的Current
(或者任何ViewModel)上有MainViewModel
的静态属性,我在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。