如何使用XAML触发器响应RoutedCommands?

时间:2014-03-01 13:19:07

标签: c# wpf xaml eventtrigger

我正在尝试触发一个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

我尝试过的事情:

  • 我知道可扩展的Blend类System.Windows.Interactivity.TriggerBase<T>,实际上我已经基于它创建了自己的自定义类,它正是我想要的。不幸的是,由于我的目标环境没有实现它,因此这些都不是一个选项。
  • 我也知道向控件添加CommandBinding并避免设置e.Handled = true是微不足道的,但本练习的重点是避免代码隐藏。

0 个答案:

没有答案