问题标签 [routed-commands]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1333 浏览

wpf - 如何重写 WPF 路由命令调度机制

我可以以某种方式扩展 WPF 命令路由,以便它首先检查是否可以在焦点字段中调用命令,如果不能在其他字段中调用(从不更改)?有什么钩子吗?也许您不知道这是否可行,但在网上某处看到类似的东西并且可以保留链接?

抽象例子

例如,如果我要编写一个带有侧面板的文本编辑器,面板就会成为焦点。如果我按 Ctrl+G 将调用某些命令,因为面板具有命令绑定和焦点(即正常的 WPF 行为)。此外,如果我按 Ctrl+H 但这次面板没有调用命令的命令绑定。在这种情况下,我希望路由引擎切换到文本编辑器并在那里冒泡相同的命令。

真实例子

我有一个菜单项,上面写着粘贴,但焦点在侧面板上。如果我按下绑定到面板的菜单命令将被执行。假设没有适当的命令绑定到面板。在这种情况下,我想粘贴到文本编辑器中。

代码

这段代码或多或少代表了这种情况。我想按 Ctrl+H 并执行 CommandBinding_Executed_1

Window1.xaml

Window1.xaml.cs

0 投票
3 回答
3784 浏览

c# - 手动执行 WPF 路由命令

RoutedUICommand从代码隐藏手动执行自定义时,如下所示:

我需要先调用CanExecute方法还是在Execute方法内部已经完成?

0 投票
1 回答
744 浏览

wpf - 如何获取会触发路由命令的输入绑定?

我有一个菜单项,它分配了一个命令(MyCommands.Indent)和两个文本区域,两个文本区域都有一个触发 MyCommands.Indent 的输入绑定。困难的部分是输入绑定有不同的手势,我希望这些手势在 MenuItem 中改变。

所以我的问题是:如何获得会触发此路由命令的输入绑定?

0 投票
1 回答
1301 浏览

c# - 无法将路由命令添加到 WPF 中的 CheckBox

一些 menuItems 使用了一个自定义的 RoutedCommand;我想使用带有复选框的相同 RoutedCommand :

编译器没有给出错误,但是当我启动应用程序时,我收到一个异常,告诉我 Command 值不能为空,因此 SwitchContextCommand 不能附加到 checkBox.Command。

该命令适用于菜单。

第一个问题:这可能吗?我想我可以在这个问题上回答自己,因为 CheckBox 类包含属性 Command 和 CommandParameters。这似乎是可能的。

第二:它是如何工作的?使用 MenuItems,在显示菜单时调用 CanExecute。不断显示的复选框会发生什么?点击时隐式调用?

第三:为什么它不起作用?

谢谢!

0 投票
1 回答
108 浏览

wpf - 这是使用 RoutedCommand 的好案例吗?

我有一个 WPF 页面,上面有 2 个 ContentControl。两个 ContentControl 都有一个图像,一个比另一个小得多。当鼠标悬停在较大的图像上时,我想在较小的图像上显示放大视图。与此非常相似的东西:http ://www.trekbikes.com/us/en/bikes/urban/soho/soho/ 。

我想我希望较大的图像控件发送实际包含图像的内容 - 较小的图像控件会拾取并显示。这是利用 RoutedCommands 的好地方吗?我可以传递这样的图像吗?

0 投票
2 回答
1187 浏览

wpf - 如何在不同的控件中使用相同的 RoutedCommand?

我在不同的文件中有 2 个不同的 UI 元素:一个 menuItem(在 window.xaml 中)和一个 userControl(在 foo.xaml 中)。

两者具有完全相同的逻辑:仅当条件匹配并调用相同的方法时才启用它们。为了编码这个逻辑,我使用RoutedCommands

我可以在CanExecuteExecuted中以相同条件在每个文件中使用 2 个不同的 RoutedCommands 。有用。

我想改进代码以遵循 DRY 规则并将 routedCommand 和附加方法外部化。这是两个文件中的绑定:

这是 TestRoutedCmmand.cs :

当我这样做时,编译器会报告此错误:

(翻译可能不准确,因为原始消息不是英文的)

似乎不支持外部方法,但我确信我没有错过任何东西。我想知道我的方法是静态的吗?

是否有另一种方法可以将我的方法外部化,还是我必须使用这 4 种方法,只调用另外 2 种方法?

注意:在我的项目中,这是 30 多个重复的 routedCommand 方法,只调用了另外 2 个方法......这就是为什么它让我如此困扰。

谢谢。

0 投票
1 回答
2683 浏览

wpf - 如何定义全局自定义 RoutedCommand?

我想对位于不同窗口中的 2 个按钮使用相同的自定义 RoutedCommand。

为了不重复代码,我想在应用程序的某处定义命令并将其绑定到两个按钮。

我想过使用 Style 来实现这一点。下面,我在一个简单的示例中重现了我的问题。

我在 App.Xaml 中声明样式:

以及 App.Xaml.cs 中的自定义命令:

编译器不喜欢该代码并给出错误:

错误 MC3080:无法设置属性设置器“CommandBindings”,因为它没有可访问的设置访问器。

AFAIK,Window 类有一个 CommandBindings 属性。

1) 使用 Style 来声明全局 CommandBindings 是否正确?如果没有,我该怎么办?

2) 为什么不能通过样式设置属性 CommandBindings ?

谢谢!

0 投票
2 回答
40497 浏览

wpf - ICommand 与 RoutedCommand

让我们将按钮Command属性绑定到自定义命令。

我应该何时实施ICommand以及何时派生RoutedCommand?我看到RoutedCommand 实现了 ICommand

在什么情况下我需要实现一个ICommand?MVVM模型呢?哪一个更适合这个目的?

0 投票
6 回答
5244 浏览

wpf - WPF 文本框拦截 RoutedUICommands

我正在尝试在我的 WPF 应用程序中使用 Undo/Redo 键盘快捷键(我有自己的自定义功能使用命令模式实现)。但是,该TextBox控件似乎正在拦截我的“撤消”RoutedUICommand。

禁用此功能的最简单方法是什么,以便我可以在 UI 树的根部捕获 Ctrl+Z?如果可能的话,我想避免TextBox在我的应用程序中的每一个中添加大量代码/XAML。

下面简要说明问题:


0 投票
1 回答
3377 浏览

wpf-controls - 如何覆盖 WPF 文本框上的复制命令?

我想覆盖 WPF 文本框的 RoutedUICommand "Copy" 的行为。

是否可以不创建从 TextBox 继承的新 TextBoxExtended 类?

我已经达到了这一点,但现在我有点迷失了。

你知道如何继续吗?