【问题标题】:WPF - how do I extend (or work in parallel with) the built-in command mechanism?WPF - 如何扩展(或并行工作)内置命令机制?
【发布时间】: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] 工具栏中需要哪些标记才能允许单个按钮调用不同的命令,具体取决于所关注控件的类型?

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

提姆

【问题讨论】:

    标签: wpf command routed-commands


    【解决方案1】:

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

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

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

    苏珊特。

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 2012-11-12
      • 2010-10-20
      • 1970-01-01
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      相关资源
      最近更新 更多