我正在使用带有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
标签改变了我尚未意识到/经历过的东西吗?
答案 0 :(得分:2)
是的,可以安全地省略。
如果您查看TriggerBase
类(在EventTrigger
的继承树中),您会看到它具有属性[ContentProperty("Actions")]
。这告诉WPF将Actions
属性视为XAML中元素的直接子元素。
这在WPF中被广泛使用,例如ContentControl
具有Content
属性(因此您可以写<Button><Image/></Button>
而不是<Button><Button.Content><Image/></Button.Content></Button>
),Panel
具有Children
属性作为其内容等等。