因此,为了让问题保持简单,我需要例如数十次使用这样的东西;
<Rectangle>
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<ei:ChangePropertyAction TargetName="AnotherObjectOnTheView"
PropertyName="Visibility"
Value="Visible" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Rectangle>
除了显然我不想在我需要的任何地方粘贴几十次。所以我试着把它们放在一个ContentControl
像这样的东西中;
<Style x:Key="MyThingy" TargetType="ContentControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<Rectangle>
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<ei:ChangePropertyAction TargetName="AnotherObjectOnTheView"
PropertyName="Visibility"
Value="Visible" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Rectangle>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
有了这个想法,我可以通过调用模板来替换每个实例的所有内容;
<ContentControl Style="{StaticResource MyThingy}"/>
除了问题是,当嵌入时ContentControl
,交互触发器似乎不会触发。它会很好地显示模板项目,但似乎忽略了触发器?
所以问题是,为什么附加到模板项的触发器被忽略,或者,有没有更好的方法来完成我想要的?