在我的WPF应用程序中,我遵循MMV模式。我有一个主视图和嵌套的子视图。我有一个主VM,它持有子VM的实例。在某些情况下,当子VM的某些属性更改时,主VM需要被通知。
我搜索了很多网页。首选的方法似乎是使用现有的框架(MVVMlight/Prism)和/或某种信使服务。每当在任何论坛/常见问题解答上提出与VM交互有关的问题时,你可以确定至少有一个答案建议使用这种方法。虽然我可以非常清楚地看到在大型应用程序中(或者如果您正在寻找“通用”解决方案),它的优点,但对于小型应用程序来说,这有时似乎是过多的开销。
对我来说,在小型应用程序中最明显的方法是:
订阅子VM的NotifyPropertyChanged。
或
将(Relay)命令传递给子VM,以便子VM可以在某个属性更改时执行该命令(甚至将更改后的值作为命令参数传递),这样主VM就知道更改并可以处理它。
我想知道在一般情况下是否有问题使用这两种方法,因为我没有看到它们违反MVVM规则?也许我漏掉了什么?
当您无法利用基于信使的方法的优势时,使用这些方法是否可以?
我搜索了很多网页。首选的方法似乎是使用现有的框架(MVVMlight/Prism)和/或某种信使服务。每当在任何论坛/常见问题解答上提出与VM交互有关的问题时,你可以确定至少有一个答案建议使用这种方法。虽然我可以非常清楚地看到在大型应用程序中(或者如果您正在寻找“通用”解决方案),它的优点,但对于小型应用程序来说,这有时似乎是过多的开销。
对我来说,在小型应用程序中最明显的方法是:
订阅子VM的NotifyPropertyChanged。
或
将(Relay)命令传递给子VM,以便子VM可以在某个属性更改时执行该命令(甚至将更改后的值作为命令参数传递),这样主VM就知道更改并可以处理它。
我想知道在一般情况下是否有问题使用这两种方法,因为我没有看到它们违反MVVM规则?也许我漏掉了什么?
当您无法利用基于信使的方法的优势时,使用这些方法是否可以?