我正在开发这个 (MVVM) Windows 8.1 metro 应用程序,我正在使用我单独构建的 UserControl
,这个 UserControl
有它自己的事件,我为它而建。
我的问题是:当我尝试在全局应用程序中对那些它们从不触发的命令使用命令时,尽管事件有效!
UserControl
及其事件:
public delegate void PlayClickedEventHandler(object sender, RoutedEventArgs e);
...
public event PlayClickedEventHandler PlayClicked;
PlayClicked
事件在 UserControl
中的按钮被点击时触发
private void PlayButton_OnClick(object sender, RoutedEventArgs e)
{
if (PlayClicked != null)
PlayClicked(this, e);
}
全局 Windows 8.1 MVVM 应用:
View :
<mediaPlayerControl:PlayerControl x:Name="UserControl">
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="PlayClicked">
<core:InvokeCommandAction Command="{Binding OnPlayClicked, Mode=TwoWay}"/>
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
</mediaPlayerControl:PlayerControl>
View 模型:
public RelayCommand OnPlayClicked { get; set; }
OnPlayClicked = new RelayCommand(() =>
{
//Stuff to do here that seem not to be done
});
我是不是错过了什么??
最佳答案
我想这可以解释它(来自 EventTriggerBehavior
上的文档)
The following events are supported:
(list of 11 events)
Consider implementing a custom behavior to respond to other events.
为什么不使用 EventTrigger
反而? (另请注意,“OnPlayClicked”绑定(bind)实际上应该是一种方式,尽管这不应该有所作为。)
<mediaPlayerControl:PlayerControl x:Name="UserControl">
<interactivity:Interaction.Triggers>
<uixaml:EventTrigger EventName="PlayClicked">
<core:InvokeCommandAction Command="{Binding OnPlayClicked}"/>
</uixaml:EventTrigger>
</interactivity:Interaction.Triggers>
</mediaPlayerControl:PlayerControl>
关于c# - 命令在我自定义的 UserControl 中内置的事件上不起作用/触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20829618/