WPF - 如何扩展(或并行工作)内置命令机制?

Posted

技术标签:

【中文标题】WPF - 如何扩展(或并行工作)内置命令机制?【英文标题】:WPF - how do I extend (or work in parallel with) the built-in command mechanism? 【发布时间】:2011-01-06 09:42:05 【问题描述】:

如果这是一个愚蠢的问题,请原谅 - 我已经阅读了十几篇关于 WPF 命令基础架构的文章,但我比以往任何时候都更加困惑。

我知道我可以使用内置命令来实现(例如)一个工具栏,该工具栏将标准剪切/复制/粘贴功能应用于任何焦点文本框:

<ToolBar>
    <Button Command="x:Static ApplicationCommands.Cut">Cut</Button>
    <Button Command="x:Static ApplicationCommands.Copy">Copy</Button>
    <Button Command="x:Static ApplicationCommands.Paste">Paste</Button>
</ToolBar>

但我想扩展此模式,以便可以使用单个工具栏在一系列不同控件上调用类似(但不相同)的操作。例如,我可能会创建一个从 ListBox 派生的自定义控件,它还支持剪切、复制和粘贴操作。尽管在 ListBox 上执行复制操作的编码与在 TextBox 上的编码不同,但仍会从同一个工具栏按钮调用它。

所以,我的问题是:

[1] 需要在自定义控件中实现什么才能像上面的示例中那样对其进行命令?具体来说,当聚焦时,它应该可以从工具栏中找到。

[2] 工具栏中需要哪些标记才能允许单个按钮调用不同的命令,具体取决于所关注控件的类型?

非常感谢您提供的任何建议。

提姆

【问题讨论】:

【参考方案1】:

带有 MVVM 模式的通用 RelayCommands 是创建 WPF 应用程序的最佳方式。你可以阅读它here。通过将 datacontext 指定为命令的存在类,可以将这些命令绑定到任何控件。

标记将只使用 Binding 关键字而不是 x:Static。

如果这能解决您的问题,请告诉我。

苏珊特。

【讨论】:

以上是关于WPF - 如何扩展(或并行工作)内置命令机制?的主要内容,如果未能解决你的问题,请参考以下文章

许多内核上令人尴尬的并行工作扩展性差

WPF事件内置路由事件

如何使扩展 WPF 工具包 ColorPicker 工作?

如何通过线程或并行扩展提高 foreach 搜索的性能?

python基础语法15 组合,封装,访问限制机制,内置装饰器property

WPF内置命令