wpf DelegateCommand возвращает не огонь - PullRequest
0 голосов
/ 20 февраля 2019

Я использую шаблон Mvvm и в View, когда событие UserControl-Initialized связывается с InitializedCommand, как показано ниже.

<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 не вызывается) ..

Интересно, в чем причина...

1 Ответ

0 голосов
/ 20 февраля 2019

Как ясно видно из названия события, событие Initialized будет запущено до того, как ваши Triggers были установлены с помощью AttachedProperty.Принимая во внимание, что Loaded событие будет работать, так как оно срабатывает после того, как все ваши значения свойств были назначены и загружены.Таким образом, это не сработает.

Документация Microsoft говорит:

Если вам не нужно читать свойства элемента, намеревайтесь сбросить свойства и выполнитене требуется никакой информации о макете, Initialized может быть лучшим событием для действий.

Если вам нужно, чтобы были доступны все свойства элемента, и вы будете устанавливать свойства, которые могут сбрасывать макет, лучше подойдет Loaded.

Кроме того, почему вы хотите вызвать ICommand для события Initialized?Почему у вас не может быть EventHandler в вашем коде для этого?

...