2016-07-15 1 views
1

Я использую WPF с шаблоном MVVM и призмой, и я использую InteractionRequests для отображения диалогов.Могу ли я опустить EventTrigger.Actions?

Когда я определяю InteractionTriggers и их действия, я определяю их как это:

<i:Interaction.Triggers> 
[Other event triggers] 
    <i:EventTrigger EventName="Raised" SourceObject="{Binding SomeConfirmationInteractionRequest}"> 
     <i:EventTrigger.Actions> 
      <windowActions:DialogWindowAction /> 
     </i:EventTrigger.Actions> 
    </i:EventTrigger> 
</i:Interaction.Triggers> 

Теперь я проверял мои Eventtriggers, и понял, мне не хватает одного из <i:EventTrigger.Actions> тегов внутри <i:EventTrigger>:

<i:EventTrigger EventName="Raised" SourceObject="{Binding SomeConfirmationInteractionRequest}"> 
    <windowActions:DialogWindowAction /> 
</i:EventTrigger> 

Я был более смущен тем, что эта часть моего кода работала, и с этим не было никаких проблем.

Мой вопрос:

Почему это может быть просто опущен?

Могу ли я просто оставить его? Или оставить отметку EventTrigger.Actions изменить то, что я еще не понял/не понял?

ответ

2

Да, его можно безопасно опустить.

Если вы посмотрите на класс TriggerBase (до дерева наследования EventTrigger), вы увидите, что у него есть атрибут [ContentProperty("Actions")]. Это говорит WPF обрабатывать свойство Actions как прямой дочерний элемент элемента в XAML.

Это широко используется в WPF, например. ContentControl s имеет Content свойства (так что вы можете написать <Button><Image/></Button> вместо <Button><Button.Content><Image/></Button.Content></Button>), Panel s имеет Children свойство, как их содержание и т.д.

+0

[ContentProperty ("Действия")] - Отлично! Вот почему у xaml есть так много способов описать одно и то же, я не знал! Спасибо :) – Mafii

+0

Вы можете использовать IntelliSense, чтобы увидеть, что разрешено писать под определенным элементом. Это будет правильно ... большую часть времени. Кроме того, если он компилируется и запускается, это, вероятно, хорошо;) –

+0

Полезно знать :) – Mafii