问题标签 [routedcommand]

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 投票
0 回答
396 浏览

c# - WPF将按下的键传递给命令处理程序

我希望以下行为:

  • 按 Ctrl + 1 会导致从列表中选择第一个项目
  • Ctrl + 2 选择前两个元素
  • 等等。

目前我正在通过 RoutedEvent、Window.CommandBindings 和 InputGesture 处理按下的键。它工作正常,但我有十个几乎相同的命令(1,2,3...9,0)。有没有更好的办法?例如,将按下的键发送到 CommandBinding.Executed

我的代码示例:

0 投票
1 回答
920 浏览

c# - wpf 工具栏中的非活动命令

我有带有工具栏(添加和删除命令)和 TabControl 的应用程序。TabControl的每个tabItem中都有VariableGrid控件。

看图片:http ://trueimages.ru/view/cNFyf

工具栏命令在我的控制中实现:

工具栏中的命令被禁用的情况很少:

  1. 当应用程序运行时
  2. 当我单击 DataGrid 的灰色字段时
  3. 当 DataGrid 为空时

When any row of DataGrid is selected - commands of toolbar are becoming active.

你能帮我解决我的问题吗?我应该设置什么 CommandTarget 的工具栏按钮?

PS:我的应用程序中有两个 VariableGrids。这就是为什么我不能将 CommandTarget 设置为“{Binding ElementName=variableGrid}”。我认为它应该设置为 FocusedElement。但我不知道该怎么做。

0 投票
2 回答
726 浏览

wpf - WPF:触发嵌套在 ContentControl 内的 UserControl 中实现的 RoutedCommands

如何触发嵌套在 ContentControl 内的 UserControl 内实现的路由命令?

我基本上拥有的是一个外部视图(源自 UserControl),其中包含:

1) 应该触发命令 MyCommand 的按钮:CommandTarget 在这里显然是错误的,因为它应该是托管在 ContentControl 内的视图,而不是内容控件本身,因为 CommandBinding 已添加到 InnerView 的 CommandBindings 集合中。

2) 内容控件。Content 属性绑定到应由内部视图使用的 ViewModel:

3) 定义内部视图类型的 DataTemplate:

InnerView(派生自 UserControl)在其 Loaded 事件中设置 CommandBinding:

当然还有一个定义命令的类:

我怎样才能得到这个工作?问题可能是 Button 上的 CommandTarget 错误。如何将 CommandTarget 绑定到 ContentControl 托管的控件?

如果我将 InnerView 直接放入 OuterView 并将 Button 的 CommandTarget 设置为 InnerView 实例,它可以工作:

0 投票
1 回答
1012 浏览

c# - WPF:将用户控制命令路由到主窗口

我必须承认我无法理解 wpf 的工作方式。我有一个用户控件BottomControl嵌套在我的Mainwindow中。如果单击底部控件中的按钮,我希望主窗口中发生某些更改(例如更改文本框的内容)。

很容易做的事情显然是在 Click_Event 中调用一个公共过程,但这不是很优雅。我已经使用了RoutedCommands。

在 Usercontrol 的 XAML 中

在 MainWindow 的代码中

显然 Mainwindow 不能使用这些事件,因为 ist 无法识别它们。我错过了什么?

任何帮助将不胜感激

乔恩

0 投票
1 回答
175 浏览

c# - 在可绑定命令中包装 UserControl 功能

如果您觉得这个问题太愚蠢,请不要阻止自己谴责我。请听我说:

  1. 我有一个自定义用户控件,我可以在其中随意添加任意数量的依赖属性。
  2. 该控件基本上是一个数据呈现控件(我将其称为 MyControl)。
  3. MyControl 有一个功能(读取方法),使其能够将呈现的数据保存在磁盘位置。

好的,现在这就是我想要的:

我想要一个DependencyPropertyinMyControl调用ExportDataProperty,它将为 xaml 中的按钮包装此功能以绑定到它。这是一些粗略的代码来解释它:


我想如何使用它?


我不知道如何包装ExportMethod里面的命令?

我担心的另一个问题是:如果消费者将MyControl绑定ExportDataPropertyICommandViewModel 公开的对象上怎么办?我不想让这种事情发生。

我以错误的方式接近它吗?任何帮助将不胜感激。

0 投票
1 回答
80 浏览

c# - 用于多个 Windows 的 RoutedCommand

已经浏览了谷歌搜索结果好几个小时了,我发现的只是如何使用 RoutedCommand 捕捉鼠标点击和键盘快捷键来执行相同操作的示例。

我已经阅读了一些有关 RoutedCommand 的资料,例如MSDNhttps://joshsmithonwpf.wordpress.com/2008/03/18/understanding-routed-commands/,如果我仍然理解正确,它也应该能够做我想做的事需要:

  1. 单击 Window2 中的按钮
  2. Window2中的调用方法
  3. Window1中的调用方法
  4. Window3 etc.pp中的调用方法。

用例将是一个包含语言设置的设置窗口,在设置中单击“确定”后,所有活动窗口都应更改其语言字符串。我提出了一个使用语言标识符重新加载字符串的方法。

所以一般来说,我希望 Window2 中的 ButtonClick 将调用方法“ChangeLanguage(lng)”的命令传递给所有活动的 Windows,无论是父 MainWindow 还是另一个与设置完全无关的 ChildWindow。Window 类有它们自己的 ChangeLanguage() 函数来改变它们自己的字符串。

我想知道在这种情况下使用自定义 EventHandler 是否会更好,并以某种方式使其全局化,因此每个活动窗口都会监听在设置窗口中更改语言时触发的事件。我在这里的另一个问题中找到了一个全局 CommandHandler 的示例,但这不适用于我想的事件。

0 投票
2 回答
1082 浏览

c# - WPF 命令全局可用

我有一个Window包含RibbonMenue. 这Window里面有一些UserControls。其中之一UserControlDataGrid. 我创建了一个ICommand允许我从DataGrid.

问题是我不知何故需要ICommands从.RibbonMenuViewModelUserControl

如何创建ICommands可以全局调用的?请注意,由于我需要从中删除行,所以需要ICommand对 my 的引用ViewModelUserControl以此类推。

图像让它更清晰一点,我希望

0 投票
1 回答
112 浏览

wpf - CustomControl 中的命令绑定问题:CanExecute() 触发,Execute() 不触发

我将 ControlTemplate 中的按钮命令绑定到 CustomControl 中的 Execute() 方法。我正在使用 RoutedCommand,CanExecute() 会触发,但 Execute() 永远不会触发。当 CustomControl 放置在主窗口中时,代码按预期工作。当它放在用户控件中时,我遇到了这个问题。我尝试了几种方法来连接按钮命令(RelayCommand 等),但似乎无法弄清楚出了什么问题。任何帮助表示赞赏。

就上下文而言,这是一个 TokenizingTextBox 控件——Xceed 开源版本的早期分支。该按钮用于从令牌列表中删除令牌。

TokenIten 的完整样式(包含感兴趣的按钮):

静态命令:

自定义控件继承自 ItemsControl。在非静态构造函数中,我们将静态删除命令连接到 DeleteToken 方法:

最后 CanDelete 将 CanExecute 设置为 true:

和 DeleteToken - 省略功能,签名在这里真的很重要:

因此,希望这对于任何有兴趣提供指导/建议的人来说都是足够的信息。谢谢。

0 投票
1 回答
73 浏览

c# - Catel 应用程序范围的命令仅在集中控制中

是否可以在 Catel 中注册一个仅在特定控件具有焦点时才会触发的应用程序命令?

例如,在Catel.Examples.WPF.Commanding示例中,(https://github.com/Catel/Catel.Examples/tree/master/src/NET/Catel.Examples.WPF.Commanding)如果我用 and 替换TextBlock并添加TextBoxs RibbonButton,这些 Application命令仅适用于专注的 .ApplicationCOmmands.CutApplicationCommands.PasteTextBox

是否可以使刷新命令仅在DocumentView具有焦点的对象上执行?

RoutedUICommands或者,是否有关于使用Catel 及其的示例或指南ICommandManager

谢谢,汤姆

0 投票
1 回答
14 浏览

wpf - 子元素绑定的 RoutedCommands 永远不会触发

我试图了解 WPF 中的 RoutedCommands。我喜欢它们如何减少不同 UI 元素和模型之间的耦合,但我似乎无法使绑定适用于作为窗口子级的自定义控件。我想这对于任何 WPF 向导来说都是一些简单的信条!:-)

以下是一些可以试用的示例代码:

路由命令:

主窗口 XAML:

主窗口代码:

自定义控件(“Greeter”)XAML:

问候代码:

如果您创建一个 WPF 项目并使用上面的内容,您将看到主窗口中的按钮被禁用。调试它表明该Greeter.cmdCanSayHi方法永远不会被调用。

如果您在主窗口中取消注释休眠的 XAML,一切正常。那么:为什么我可以绑定到来自窗口的命令而不是来自其子控件的命令?与渲染时间有关吗?