我使用C#和WPF,而不使用MVVM方法。应用程序的重要组成部分之一是Windows、Pages和UserControls之间的通信。在MVVM中,它们会在幕后执行,并允许您使用某种方法在不同实例之间发送或接收数据。
在后面的代码中,父窗口和子窗口只需将ParentWindow引用传递或分配给ChildWindow,就可以轻松地进行通信。使不同窗口或页面之间的通信成为可能。但我所做的是
创建一个名为Operator.cs的静态类,该类具有一个List<Window> AvailableWindows。现在,每当我们创建一个窗口时,我们都会将该实例推入List<Windows> AvailableWindows中,并在关闭窗口时从AvailableWindows中删除该实例。通过这种方式,我可以引用可用的页面或窗口,并且可以从任何地方访问它并执行任何操作,并且可以轻松地在多个实例之间进行通信。
public static class Operator
{
public Operator()
{
}
public static List<Page> AvailablePages = new List<Page>();
public static List<Window> AvailableWindows = new List<Window>();
} 发布于 2020-10-16 16:15:11
这真的取决于你试图通过让页面能够相互引用来完成什么。我倾向于将关注点分离开来,最终将页面编码在一起,A页延伸到窗口B,然后延伸到C页,后者延伸到A页,等等。
如果用例类似于事件,我可能会使用中介模式(https://sourcemaking.com/design_模式/中介)允许各个页面发布事件。虽然MVVM中也经常使用这种模式,但它并不依赖于MVVM。在JavaScript网络应用程序中,你似乎也有类似的想法,所以它并不是特定于技术的。
https://softwareengineering.stackexchange.com/questions/418014
复制相似问题