命令不在我自定义的UserControl中构建的事件上工作/触发

时间:2013-12-29 20:14:26

标签: c# xaml mvvm windows-runtime

我正在使用这个(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应用程序:

观点:

<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>

ViewModel:

public RelayCommand OnPlayClicked { get; set; }
    OnPlayClicked = new RelayCommand(() =>
                                    {
                                       //Stuff to do here that seem not to be done
                                    });

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

我想这可以解释一下(来自EventTriggerBehavior上的文档)

  

支持以下事件:

     

(11个事件清单)

     

考虑实施自定义行为以响应其他事件。

为什么不使用EventTrigger呢? (另请注意,“OnPlayClicked”绑定应该是单向的,尽管不应该有所作为。)

<mediaPlayerControl:PlayerControl x:Name="UserControl">
    <interactivity:Interaction.Triggers>
        <uixaml:EventTrigger EventName="PlayClicked">
            <core:InvokeCommandAction Command="{Binding OnPlayClicked}"/>
        </uixaml:EventTrigger>
    </interactivity:Interaction.Triggers>
</mediaPlayerControl:PlayerControl>