wpf DelegateCommand return 不触发

wpf DelegateCommand return not fire

当 UserControl-Initialized 事件绑定到 InitializedCommand 时,我正在使用 Mvvm 模式和视图,如下所示。

<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...***
       }
    }
}

其他事件(已加载、已卸载..)return 部分工作正常但初始化命令 return 不工作(DoSomething未调用)..

不知道是什么原因...

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

Microsoft documentation 说:

If you do not need to read element properties, intend to reset properties, and do not need any layout information, Initialized might be the better event to act upon.

If you need all properties of the element to be available, and you will be setting properties that are likely to reset the layout, Loaded might be the better event to act upon.

此外,为什么要为 Initialized 事件调用 ICommand?为什么你不能在你的代码隐藏中有一个 EventHandler