gpt4 book ai didi

wpf - 从多个 View 模型设置 WPF 命令

转载 作者:行者123 更新时间:2023-12-04 20:18:19 27 4
gpt4 key购买 nike

与任何 MVVM WPF 应用程序一样,我有一些 View 模型。每个都有一些命令。我的 View 实现了 Fluent UI(Office 功能区),因此有些项目会根据应用程序的上下文亮起。功能区是主应用程序的子项。

我的应用程序的基本结构是它管理一个类(class)。一个类(class)中有多个模块,所以我有一个用于类(class)和模块的虚拟机……每个模块都有命令。

当应用程序加载时,我将主窗口的数据上下文设置为类(class),因此将类(class)命令绑定(bind)到功能区很容易并且工作正常。

当用户开始使用模块时,挑战就来了。当从列表中选择一个模块时,详细信息将显示在另一个用户控件中。现在……我的挑战是如何将命令连接到功能区。

我假设我可以有一些事件处理程序,以编程方式将当前模块的命令连接到功能区中的所有相关控件,并在上下文消失时删除所有内容。但这似乎是很多不必要的工作。有更简洁的方法吗?

我考虑过路由命令/事件,但有人告诉我这行不通,因为它们不会一直冒泡到窗口并返回到功能区。

在这里寻找一些指导......我对 MVVM 有点菜​​鸟(但喜欢它!)。

最佳答案

想法:引入一个 ShellCommands 类,作为服务公开。

public class ShellCommands : IShellCommands
{
public ICommand SaveCommand { get; set; }
...
}

然后 CourseViewModel 和 ModuleViewModel 可以使用相同的服务来注册它们的命令。

public class CourseViewModel : ViewModel 
{
public CourseViewModel(IShellCommands shellCommands, ...)
{
this.ShellCommands = shellCommands;
...
}

public IShellCommands ShellCommands { get; private set; }
}

在 XAML 中,您可以通过 ShellCommands 属性访问该服务。

<MenuItem Header="Save" Command="{Binding ShellCommands.SaveCommand}"/>

.

更多信息: WPF Application Framework (WAF)

关于wpf - 从多个 View 模型设置 WPF 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2783375/

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