我正在尝试触发一个TriggerAction
以响应RoutedCommand
通过一个无法处理它的控件。问题是,据我所知,没有“CommandTrigger
”这样的东西。
这是我最接近我想要的功能:
<MyControl.Triggers>
<EventTrigger xmlns:in="clr-namespace:System.Windows.Input;assembly=PresentationCore"
RoutedEvent="in:CommandManager.PreviewExecuted">
<SoundPlayerAction Source="foo"/>
</EventTrigger>
</ui:Sidebar.Triggers>
只要命令通过MyControl
,就会播放声音,但是无法指定要响应的命令。如此接近......
如果不是Trigger / Action系统的不可扩展性,那么这不会是一个问题。 According to someone on MSDN必要的方法和构造函数为internal
。
我尝试过的事情:
System.Windows.Interactivity.TriggerBase<T>
,实际上我已经基于它创建了自己的自定义类,它正是我想要的。不幸的是,由于我的目标环境没有实现它,因此这些都不是一个选项。CommandBinding
并避免设置e.Handled = true
是微不足道的,但本练习的重点是避免代码隐藏。