我可以省略EventTrigger.Actions吗?

时间:2016-07-15 07:14:49

标签: c# wpf xaml mvvm prism

我正在使用带有MVVM模式和Prism的WPF,并且我使用InteractionRequests来显示对话框。

当我定义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标签改变了我尚未意识到/经历过的东西吗?

1 个答案:

答案 0 :(得分:2)

是的,可以安全地省略。

如果您查看TriggerBase类(在EventTrigger的继承树中),您会看到它具有属性[ContentProperty("Actions")]。这告诉WPF将Actions属性视为XAML中元素的直接子元素。

这在WPF中被广泛使用,例如ContentControl具有Content属性(因此您可以写<Button><Image/></Button>而不是<Button><Button.Content><Image/></Button.Content></Button>),Panel具有Children属性作为其内容等等。