wpf DelegateCommand返回不火

问题描述 投票:0回答:1

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

其他事件(Loaded,Unloaded ..)返回部分正常工作但Initialized Command返回不起作用(DoSomething未调用)..

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

wpf prism delegatecommand
1个回答
0
投票

正如事件名称清楚地说,Initialized事件将在你的Triggers通过AttachedProperty设置之前触发。而Loaded事件将起作用,因为它是在分配和加载所有属性值后触发的。所以,这不起作用。

Microsoft documentation说:

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

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

另外,你为什么要为ICommand事件调用Initialized?为什么你不能在你的代码后面有一个EventHandler

© www.soinside.com 2019 - 2024. All rights reserved.