【发布时间】:2012-06-06 08:25:59
【问题描述】:
我正在开发一个 Surface WPF 项目,我们尝试在其中实现 MVVM 模式。在这个项目中,我们正在构建一些我们绑定到不同视图模型的自定义控件。
例如,我们有一个设置控件,它有一个设置视图模型,我们有一个主视图模型,它是“整体”视图模型。
在我们的 surfacewindows.xaml 页面中,我们使用 mvvm-light 中的视图模型定位器将数据上下文设置为主视图模型。此外,在我们的 surfacewindow.xaml 中,我们添加了设置控件,并在控件上将 datacontext 设置为设置视图模型。
现在我们需要两个视图模型相互交互:当前的情况是我们需要设置设置控件的可见性。我们在主视图模型上有一个布尔值 (IsSettingsControlVisible) 属性,它通过使用转换器将布尔值转换为可见性对象来绑定到控件的 Visibility 属性。
当我们需要通过单击设置控件上的关闭按钮将可见性设置为不可见时,问题就出现了。因为我们已经将控件上的数据上下文设置为设置视图模型,所以我们无法访问主视图模型。
到目前为止,我们所想到的是将设置视图模型作为属性添加到主视图模型,并从设置控件中删除数据上下文。在设置控件中,我们将使用绑定作为 SettingsProperty.Property。比我们也可以从设置控件访问主视图模型。那有意义吗?有没有更好的方法来进行此类交互?
我真的很想听听您关于如何实现这些互动的想法。
【问题讨论】:
标签: wpf mvvm mvvm-light view-model-pattern