gpt4 book ai didi

wpf Prism 复合命令

转载 作者:行者123 更新时间:2023-12-04 19:40:38 26 4
gpt4 key购买 nike

我有一个复合 WPF 应用程序。我打算实现工具栏功能。主要区域中的所有 View 都通用的工具栏项目很少(主要是打印、保存、隐藏、展开、撤消)。为此,我创建了默认工具栏模块,它将这些项目(打印、保存、隐藏、展开、撤消)添加到工具栏区域。当用户单击任何工具栏项时,这需要由主要区域中的所有 20 个 View 处理。

对于每个工具栏项,我都关联了一个 prism delegatecommand 对象。

示例:

private ICommand _printCommand;

public ICommand PrintCommand
{
get
{
if (_printCommand == null)
{
_printCommand =
new DelegateCommand<object>(**Print**, **CanPrint**);
}

return _printCommand;
}
}

Xaml,将工具栏项绑定(bind)到此命令。

在主要区域,我们展示了近 20 个 View 。所有这些 View 都必须订阅此命令。我正在考虑使用事件聚合器发布一个事件,所有的 View 都会订阅这个事件。

例如:当用户点击打印时,打印命令执行Print方法,该方法将发布打印事件。此事件将被订阅 20 个 View 并做进一步处理。

我是否以正确的方式实现了工具栏?

最佳答案

我最初想到使用复合命令。但是通过阅读文档,它可能不符合我的要求。

例如:应用程序支持 40 个 View Main region -> 20 Views that are active ,所有 View 模型都来自baseviewmodel。

工具栏 -> 保存按钮 -> 数据绑定(bind)到 compositesaveall 命令(启用主动感知监视器)baseviewmodel -> save command -> registers/unregisters based on specific filter conditions to compositesaveallcommand

当用户单击保存按钮时,compositesaveallcommand 查找所有已注册的事件命令,并检查所有已注册的 View 模型命令调用(canexecute 方法,并且所有已注册的命令需要返回 true)然后调用子命令(execute 方法)。

但在我的例子中,如果用户在单个 View 中进行修改,则剩余 19 个 View 没有修改。但我想为单一 View 执行保存。看起来复合命令不会调用已注册的命令,除非它可以执行所有命令。

关于wpf Prism 复合命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2247184/

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