C# 使用MVVM跨WPF应用程序管理窗口的正确方法(设计模式)是什么?

C# 使用MVVM跨WPF应用程序管理窗口的正确方法(设计模式)是什么?,c#,wpf,mvvm,wpf-controls,C#,Wpf,Mvvm,Wpf Controls,我正在使用WPF和MVVM架构编写预算管理应用程序。它有很多窗口,可以通过点击按钮打开(创建事务、创建帐户)等等,但是我不知道如何在整个应用程序中管理它们。 例如,我不想允许用户打开另一个“创建事务”窗口,除非上一个窗口已关闭。用户应该无法打开许多相同的窗口,因此,如果他再次单击按钮,而上一个窗口未关闭,则该按钮不应工作。 我想创建一个静态类,它将有一个打开的窗口名称列表,因此每次viewmodel都会检查列表中是否已经打开了某些类型的窗口。(我从viewmodel打开窗口),不过,可能有更好的

我正在使用WPF和MVVM架构编写预算管理应用程序。它有很多窗口,可以通过点击按钮打开(创建事务、创建帐户)等等,但是我不知道如何在整个应用程序中管理它们。 例如,我不想允许用户打开另一个“创建事务”窗口,除非上一个窗口已关闭。用户应该无法打开许多相同的窗口,因此,如果他再次单击按钮,而上一个窗口未关闭,则该按钮不应工作。 我想创建一个静态类,它将有一个打开的窗口名称列表,因此每次viewmodel都会检查列表中是否已经打开了某些类型的窗口。(我从viewmodel打开窗口),不过,可能有更好的方法或设计模式,谢谢

另外,我不使用任何MVVM框架,也不打算使用

例如:

对于您的windows,只需预先实例化它们,将它们放入字典中,然后只调用Show()。若你们不想实例化它们,试着给它们绑定一个id,或者看看窗口对象是否不在字典中。你可以使用一个模式,但那会使事情过于复杂。如果你坚持的话,你可能会对单件的FlyWeight感兴趣。例如,如果你打开一个“创建新帐户”窗口,默认情况下它不是模态的吗?我的意思是,在您打开子窗口之前,您不应该单击父窗口中的任何内容。@VladyslavBabych,请您发布客户端伪代码,以演示您希望实现的目标?