2016-07-15 91 views
1

我正在使用WPVM和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■找了Content性质(所以你可以写<Button><Image/></Button>代替<Button><Button.Content><Image/></Button.Content></Button>),Panel■找了Children财产作为自己的内容等

+0

[ContentProperty(“操作”)] - 真棒!这就是为什么xaml有很多方式来描述相同的东西,我不知道!谢谢:) – Mafii

+0

您可以使用智能感知来查看某些元素下允许写入的内容。这将是正确的...大部分时间。另外,如果它编译并运行,它可能是好的;) –

+0

有用的信息:) – Mafii

相关问题