问题标签 [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.
c# - WPF将按下的键传递给命令处理程序
我希望以下行为:
- 按 Ctrl + 1 会导致从列表中选择第一个项目
- Ctrl + 2 选择前两个元素
- 等等。
目前我正在通过 RoutedEvent、Window.CommandBindings 和 InputGesture 处理按下的键。它工作正常,但我有十个几乎相同的命令(1,2,3...9,0)。有没有更好的办法?例如,将按下的键发送到 CommandBinding.Executed
我的代码示例:
c# - wpf 工具栏中的非活动命令
我有带有工具栏(添加和删除命令)和 TabControl 的应用程序。TabControl的每个tabItem中都有VariableGrid控件。
看图片:http ://trueimages.ru/view/cNFyf
工具栏命令在我的控制中实现:
工具栏中的命令被禁用的情况很少:
- 当应用程序运行时
- 当我单击 DataGrid 的灰色字段时
- 当 DataGrid 为空时
When any row of DataGrid is selected - commands of toolbar are becoming active.
你能帮我解决我的问题吗?我应该设置什么 CommandTarget 的工具栏按钮?
PS:我的应用程序中有两个 VariableGrids。这就是为什么我不能将 CommandTarget 设置为“{Binding ElementName=variableGrid}”。我认为它应该设置为 FocusedElement。但我不知道该怎么做。
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 实例,它可以工作:
c# - WPF:将用户控制命令路由到主窗口
我必须承认我无法理解 wpf 的工作方式。我有一个用户控件BottomControl嵌套在我的Mainwindow中。如果单击底部控件中的按钮,我希望主窗口中发生某些更改(例如更改文本框的内容)。
很容易做的事情显然是在 Click_Event 中调用一个公共过程,但这不是很优雅。我已经使用了RoutedCommands。
在 Usercontrol 的 XAML 中
在 MainWindow 的代码中
显然 Mainwindow 不能使用这些事件,因为 ist 无法识别它们。我错过了什么?
任何帮助将不胜感激
乔恩
c# - 在可绑定命令中包装 UserControl 功能
如果您觉得这个问题太愚蠢,请不要阻止自己谴责我。请听我说:
- 我有一个自定义用户控件,我可以在其中随意添加任意数量的依赖属性。
- 该控件基本上是一个数据呈现控件(我将其称为 MyControl)。
- MyControl 有一个功能(读取方法),使其能够将呈现的数据保存在磁盘位置。
好的,现在这就是我想要的:
我想要一个DependencyProperty
inMyControl
调用ExportDataProperty
,它将为 xaml 中的按钮包装此功能以绑定到它。这是一些粗略的代码来解释它:
我想如何使用它?
我不知道如何包装ExportMethod
里面的命令?
我担心的另一个问题是:如果消费者将MyControl
绑定ExportDataProperty
到ICommand
ViewModel 公开的对象上怎么办?我不想让这种事情发生。
我以错误的方式接近它吗?任何帮助将不胜感激。
c# - 用于多个 Windows 的 RoutedCommand
已经浏览了谷歌搜索结果好几个小时了,我发现的只是如何使用 RoutedCommand 捕捉鼠标点击和键盘快捷键来执行相同操作的示例。
我已经阅读了一些有关 RoutedCommand 的资料,例如MSDN和https://joshsmithonwpf.wordpress.com/2008/03/18/understanding-routed-commands/,如果我仍然理解正确,它也应该能够做我想做的事需要:
- 单击 Window2 中的按钮
- Window2中的调用方法
- Window1中的调用方法
- Window3 etc.pp中的调用方法。
用例将是一个包含语言设置的设置窗口,在设置中单击“确定”后,所有活动窗口都应更改其语言字符串。我提出了一个使用语言标识符重新加载字符串的方法。
所以一般来说,我希望 Window2 中的 ButtonClick 将调用方法“ChangeLanguage(lng)”的命令传递给所有活动的 Windows,无论是父 MainWindow 还是另一个与设置完全无关的 ChildWindow。Window 类有它们自己的 ChangeLanguage() 函数来改变它们自己的字符串。
我想知道在这种情况下使用自定义 EventHandler 是否会更好,并以某种方式使其全局化,因此每个活动窗口都会监听在设置窗口中更改语言时触发的事件。我在这里的另一个问题中找到了一个全局 CommandHandler 的示例,但这不适用于我想的事件。
c# - WPF 命令全局可用
我有一个Window
包含RibbonMenue
. 这Window
里面有一些UserControls
。其中之一UserControl
是DataGrid
. 我创建了一个ICommand
允许我从DataGrid
.
问题是我不知何故需要ICommands
从.RibbonMenu
ViewModel
UserControl
如何创建ICommands
可以全局调用的?请注意,由于我需要从中删除行,所以需要ICommand
对 my 的引用ViewModel
,UserControl
以此类推。
wpf - CustomControl 中的命令绑定问题:CanExecute() 触发,Execute() 不触发
我将 ControlTemplate 中的按钮命令绑定到 CustomControl 中的 Execute() 方法。我正在使用 RoutedCommand,CanExecute() 会触发,但 Execute() 永远不会触发。当 CustomControl 放置在主窗口中时,代码按预期工作。当它放在用户控件中时,我遇到了这个问题。我尝试了几种方法来连接按钮命令(RelayCommand 等),但似乎无法弄清楚出了什么问题。任何帮助表示赞赏。
就上下文而言,这是一个 TokenizingTextBox 控件——Xceed 开源版本的早期分支。该按钮用于从令牌列表中删除令牌。
TokenIten 的完整样式(包含感兴趣的按钮):
静态命令:
自定义控件继承自 ItemsControl。在非静态构造函数中,我们将静态删除命令连接到 DeleteToken 方法:
最后 CanDelete 将 CanExecute 设置为 true:
和 DeleteToken - 省略功能,签名在这里真的很重要:
因此,希望这对于任何有兴趣提供指导/建议的人来说都是足够的信息。谢谢。
c# - Catel 应用程序范围的命令仅在集中控制中
是否可以在 Catel 中注册一个仅在特定控件具有焦点时才会触发的应用程序命令?
例如,在Catel.Examples.WPF.Commanding
示例中,(https://github.com/Catel/Catel.Examples/tree/master/src/NET/Catel.Examples.WPF.Commanding)如果我用 and 替换TextBlock
并添加TextBox
s RibbonButton
,这些 Application命令仅适用于专注的 .ApplicationCOmmands.Cut
ApplicationCommands.Paste
TextBox
是否可以使刷新命令仅在DocumentView
具有焦点的对象上执行?
RoutedUICommands
或者,是否有关于使用Catel 及其的示例或指南ICommandManager
?
谢谢,汤姆
wpf - 子元素绑定的 RoutedCommands 永远不会触发
我试图了解 WPF 中的 RoutedCommands。我喜欢它们如何减少不同 UI 元素和模型之间的耦合,但我似乎无法使绑定适用于作为窗口子级的自定义控件。我想这对于任何 WPF 向导来说都是一些简单的信条!:-)
以下是一些可以试用的示例代码:
路由命令:
主窗口 XAML:
主窗口代码:
自定义控件(“Greeter”)XAML:
问候代码:
如果您创建一个 WPF 项目并使用上面的内容,您将看到主窗口中的按钮被禁用。调试它表明该Greeter.cmdCanSayHi
方法永远不会被调用。
如果您在主窗口中取消注释休眠的 XAML,一切正常。那么:为什么我可以绑定到来自窗口的命令而不是来自其子控件的命令?与渲染时间有关吗?