问题标签 [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.
wpf - 如何重写 WPF 路由命令调度机制
我可以以某种方式扩展 WPF 命令路由,以便它首先检查是否可以在焦点字段中调用命令,如果不能在其他字段中调用(从不更改)?有什么钩子吗?也许您不知道这是否可行,但在网上某处看到类似的东西并且可以保留链接?
抽象例子
例如,如果我要编写一个带有侧面板的文本编辑器,面板就会成为焦点。如果我按 Ctrl+G 将调用某些命令,因为面板具有命令绑定和焦点(即正常的 WPF 行为)。此外,如果我按 Ctrl+H 但这次面板没有调用命令的命令绑定。在这种情况下,我希望路由引擎切换到文本编辑器并在那里冒泡相同的命令。
真实例子
我有一个菜单项,上面写着粘贴,但焦点在侧面板上。如果我按下绑定到面板的菜单命令将被执行。假设没有适当的命令绑定到面板。在这种情况下,我想粘贴到文本编辑器中。
代码
这段代码或多或少代表了这种情况。我想按 Ctrl+H 并执行 CommandBinding_Executed_1
Window1.xaml
Window1.xaml.cs
c# - 手动执行 WPF 路由命令
RoutedUICommand
从代码隐藏手动执行自定义时,如下所示:
我需要先调用CanExecute
方法还是在Execute
方法内部已经完成?
wpf - 如何获取会触发路由命令的输入绑定?
我有一个菜单项,它分配了一个命令(MyCommands.Indent)和两个文本区域,两个文本区域都有一个触发 MyCommands.Indent 的输入绑定。困难的部分是输入绑定有不同的手势,我希望这些手势在 MenuItem 中改变。
所以我的问题是:如何获得会触发此路由命令的输入绑定?
c# - 无法将路由命令添加到 WPF 中的 CheckBox
一些 menuItems 使用了一个自定义的 RoutedCommand;我想使用带有复选框的相同 RoutedCommand :
编译器没有给出错误,但是当我启动应用程序时,我收到一个异常,告诉我 Command 值不能为空,因此 SwitchContextCommand 不能附加到 checkBox.Command。
该命令适用于菜单。
第一个问题:这可能吗?我想我可以在这个问题上回答自己,因为 CheckBox 类包含属性 Command 和 CommandParameters。这似乎是可能的。
第二:它是如何工作的?使用 MenuItems,在显示菜单时调用 CanExecute。不断显示的复选框会发生什么?点击时隐式调用?
第三:为什么它不起作用?
谢谢!
wpf - 这是使用 RoutedCommand 的好案例吗?
我有一个 WPF 页面,上面有 2 个 ContentControl。两个 ContentControl 都有一个图像,一个比另一个小得多。当鼠标悬停在较大的图像上时,我想在较小的图像上显示放大视图。与此非常相似的东西:http ://www.trekbikes.com/us/en/bikes/urban/soho/soho/ 。
我想我希望较大的图像控件发送实际包含图像的内容 - 较小的图像控件会拾取并显示。这是利用 RoutedCommands 的好地方吗?我可以传递这样的图像吗?
wpf - 如何在不同的控件中使用相同的 RoutedCommand?
我在不同的文件中有 2 个不同的 UI 元素:一个 menuItem(在 window.xaml 中)和一个 userControl(在 foo.xaml 中)。
两者具有完全相同的逻辑:仅当条件匹配并调用相同的方法时才启用它们。为了编码这个逻辑,我使用RoutedCommands。
我可以在CanExecute和Executed中以相同条件在每个文件中使用 2 个不同的 RoutedCommands 。有用。
我想改进代码以遵循 DRY 规则并将 routedCommand 和附加方法外部化。这是两个文件中的绑定:
这是 TestRoutedCmmand.cs :
当我这样做时,编译器会报告此错误:
(翻译可能不准确,因为原始消息不是英文的)
似乎不支持外部方法,但我确信我没有错过任何东西。我想知道我的方法是静态的吗?
是否有另一种方法可以将我的方法外部化,还是我必须使用这 4 种方法,只调用另外 2 种方法?
注意:在我的项目中,这是 30 多个重复的 routedCommand 方法,只调用了另外 2 个方法......这就是为什么它让我如此困扰。
谢谢。
wpf - 如何定义全局自定义 RoutedCommand?
我想对位于不同窗口中的 2 个按钮使用相同的自定义 RoutedCommand。
为了不重复代码,我想在应用程序的某处定义命令并将其绑定到两个按钮。
我想过使用 Style 来实现这一点。下面,我在一个简单的示例中重现了我的问题。
我在 App.Xaml 中声明样式:
以及 App.Xaml.cs 中的自定义命令:
编译器不喜欢该代码并给出错误:
错误 MC3080:无法设置属性设置器“CommandBindings”,因为它没有可访问的设置访问器。
AFAIK,Window 类有一个 CommandBindings 属性。
1) 使用 Style 来声明全局 CommandBindings 是否正确?如果没有,我该怎么办?
2) 为什么不能通过样式设置属性 CommandBindings ?
谢谢!
wpf - ICommand 与 RoutedCommand
让我们将按钮Command
属性绑定到自定义命令。
我应该何时实施ICommand
以及何时派生RoutedCommand
?我看到RoutedCommand 实现了 ICommand。
在什么情况下我需要实现一个ICommand
?MVVM模型呢?哪一个更适合这个目的?
wpf - WPF 文本框拦截 RoutedUICommands
我正在尝试在我的 WPF 应用程序中使用 Undo/Redo 键盘快捷键(我有自己的自定义功能使用命令模式实现)。但是,该TextBox
控件似乎正在拦截我的“撤消”RoutedUICommand。
禁用此功能的最简单方法是什么,以便我可以在 UI 树的根部捕获 Ctrl+Z?如果可能的话,我想避免TextBox
在我的应用程序中的每一个中添加大量代码/XAML。
下面简要说明问题:
wpf-controls - 如何覆盖 WPF 文本框上的复制命令?
我想覆盖 WPF 文本框的 RoutedUICommand "Copy" 的行为。
是否可以不创建从 TextBox 继承的新 TextBoxExtended 类?
我已经达到了这一点,但现在我有点迷失了。
你知道如何继续吗?