wpf DelegateCommand返回不触发

时间:2019-02-19 23:16:03

标签: wpf prism delegatecommand

如下所示,当UserControl-Initialized事件绑定到InitializedCommand时,我正在使用Mvvm模式并在View中使用

<i:Interaction.Triggers>
    <i:EventTrigger EventName="Initialized">
        <prism:InvokeCommandAction Command="{Binding Path=InitializedCommand}" />
    </i:EventTrigger>
</i:Interaction.Triggers>

和ViewModel如下。

public DelegateCommand InitializedCommand
{
    get
    {
       SelectedPopupType = PopupTypes.Downloading;
       IsShowPopup = true;
       return new DelegateCommand(delegate ()
       {
          *** DoSomething...***
       }
    }
}

其他事件(已加载,已卸载..)返回部件正常工作,但初始化命令返回无效(未调用 DoSomething )。.

我想知道是什么原因...

1 个答案:

答案 0 :(得分:0)

正如事件名称所明确指出的那样,Initialized事件将在通过Triggers设置AttachedProperty之前触发。而Loaded事件将起作用,因为在分配和加载所有属性值之后触发该事件。所以,这行不通。

Microsoft documentation说:

  

如果您不需要读取元素属性,打算重置属性并且不需要任何布局信息,那么Initialized可能是更好的选择。

     

如果您需要元素的所有属性都可用,并且要设置可能会重置布局的属性,那么Loaded可能是更好的选择。

此外,为什么要为ICommand事件调用Initialized?为什么您的代码后面没有EventHandler