gpt4 book ai didi

wpf - 多个 View 模型相互交互

转载 作者:行者123 更新时间:2023-12-03 10:29:49 24 4
gpt4 key购买 nike

我正在开发一个 Surface WPF 项目,我们尝试在其中实现 MVVM 模式。在这个项目中,我们正在构建一些我们绑定(bind)到不同 View 模型的自定义控件。

例如,我们有一个设置控件,它有一个设置 View 模型,我们有一个主视图模型,它是“整体” View 模型。

在我们的 surfacewindows.xaml 页面中,我们使用 mvvm-light 中的 View 模型定位器将数据上下文设置为主视图模型。此外,在我们的 surfacewindow.xaml 中,我们添加了设置控件,并在控件上将 datacontext 设置为设置 View 模型。

现在我们需要两个 View 模型相互交互:当前的情况是我们需要设置设置控件的可见性。我们在主视图模型上有一个 bool 值 (IsSettingsControlVisible) 属性,它通过使用转换器将 bool 值转换为可见性对象来绑定(bind)到控件的 Visibility 属性。

当我们需要通过单击设置控件上的关闭按钮将可见性设置为不可见时,现在出现了问题。因为我们已经将控件上的数据上下文设置为设置 View 模型,所以我们无法访问主视图模型。

到目前为止,我们所想到的是将设置 View 模型作为属性添加到主视图模型中,并从设置控件中删除数据上下文。在设置控件中,我们将使用绑定(bind)作为 SettingsProperty.Property。比我们也可以从设置控件访问主视图模型。那有意义吗?有没有更好的方法来进行这种互动?

我真的很想听听你关于如何让这些互动发生的想法。

最佳答案

我倾向于使用使用 CaSTLe Windsor 构建的 View 模型图。顶层 View 模型使用构造函数注入(inject)来接收它需要的下一层 View 模型。在 View 中,我将内容呈现器绑定(bind)到 View 模型上的属性以创建相应的 View 图。

这样做,父 subview 模型很容易通信,但兄弟或更远的 View 模型通信有点困难。

在这些情况下,我倾向于使用事件聚合器或 Messenger 来允许 View 模型进行通信。

关于wpf - 多个 View 模型相互交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10910655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com