gpt4 book ai didi

c# - 命令在我自定义的 UserControl 中内置的事件上不起作用/触发

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:20 25 4
gpt4 key购买 nike

我正在开发这个 (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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com