当UserControl初始化事件绑定到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...***
}
}
}其他事件(加载、卸载.)返回部件正常工作,但初始化的命令返回不起作用(DoSomething未调用)。
我想知道为什么..。
发布于 2019-02-20 00:25:47
正如事件名称明确指出的那样,Initialized事件将在通过AttachedProperty设置Triggers之前触发。而Loaded事件将工作,因为它是在分配和加载所有属性值之后触发的。所以,这不管用。
如果您不需要读取元素属性,打算重置属性,并且不需要任何布局信息,那么
Initialized可能是更好的操作事件。 如果您需要元素的所有属性都可用,并且您将设置可能重置布局的属性,则Loaded可能是要处理的更好的事件。
另外,为什么要为一个ICommand事件调用一个Initialized呢?为什么不能在代码背后设置一个EventHandler呢?
https://stackoverflow.com/questions/54776378
复制相似问题