0

当 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)..

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

4

1 回答 1

1

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

微软文档说:

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

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

另外,为什么要ICommandInitialized事件调用 a?为什么你不能有一个EventHandler在你的代码隐藏呢?

于 2019-02-20T00:25:47.043 回答