上下文相关的 RoutedUICommand.CanExecute、执行

发布于 2024-07-13 07:39:26 字数 270 浏览 12 评论 0原文

我有一个 RoutedUICommand,可以通过 UI 中的各个位置进行访问。 例如全局键盘快捷键、菜单、上下文菜单或按钮。 要在 RoutedUICommand.CanExecute 和 RoutedUICommand.Execute 方法中执行的代码取决于所使用的 UI 元素。 我怎样才能实现这种差异化。 我想我可以使用 (Can)ExecutedRoulatedEventArgs.Source 或 OrigianlSource 但源始终相同。 这是主根窗口。 这通常是如何实现的? 我可能做错了什么?

I have a single RoutedUICommand that can be accessed through various places in the UI. Such as global Keyboardshortcut, Menu, ContextMenu or Button. The code that is to be executed in the RoutedUICommand.CanExecute and RoutedUICommand.Execute methods depends on what UI element was used. How can I achieve this differentiation. I was thinking that I could use the (Can)ExecutedRoutedEventArgs.Source or OrigianlSource but the source is always the same. It is the main Root window. How is this usually achieved? What could I possibly be doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

滿滿的愛 2024-07-20 07:39:26

如果您需要根据调用命令的 UI 来运行不同的代码,您可能做错了什么。

如果您需要通过击键执行某些操作或打开一个对话框要求从菜单中获取更多信息,您应该将其分为两个命令(例如 MS Office“打印”和“快速打印”命令)。

如果您确实必须对每个 UI 元素执行不同的操作,那么您不会从使用命令中获得任何优势,并且应该考虑使用老式的事件处理程序,至少元素特定的代码与该元素相关联,而不是存储在中央所有元素中。包含“执行”代码。

如果您选择忽略我上面的建议,请查看 CommandParameter 属性,您可以为每个 UI 元素的参数设置不同的值,至少使用它您可以保持 UI/逻辑分离命令设计的错觉提供。

If you need different code to run depending on the UI that invoked the command you are probably doing something wrong.

If you have something like a just doing something from a keystroke or opening a dialog asking for more information from a menu you should break this apart into two commands (like MS Office "Print" and "Quick Print" commands).

If you truly have to do different things from each UI element you are not getting any advantage from using commands and should think about using old fashioned event handlers, at least then the element specific code is tied to the element and not stored in a central all encompassing "Execute" code .

And if you choose to ignore my advice above, take a look at the CommandParameter property, you can set a different value fro the parameter for each UI element, at least with it you can keep an illusion of the UI/Logic separation commands are designed to provide.

◇流星雨 2024-07-20 07:39:26

通常,您可以为不同的“目标”拥有不同的 CommandBinding 实现 - 每个“源”具有不同的行为是不寻常的。

您能举例说明您正在尝试做什么吗?

Normally you could have different CommandBinding implementations for different 'Targets' - having different behavior for each 'Source' is unusual.

Could you give an example of what you are trying to do?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文