Wpf 是否可以使用样式或模板应用混合行为?

Wpf 是否可以使用样式或模板应用混合行为?,wpf,xaml,expression-blend,Wpf,Xaml,Expression Blend,我对我的混合行为、动作和触发器的小集合非常满意——它们易于使用且功能强大。但我仍然不知道如何避免在每个元素的基础上应用它们。例如,如果我有这样的行为: <Rectangle> <i:Interaction.Behaviors> <il:MouseDragElementBehavior/> </i:Interaction.Behaviors> </Rectangle> 我的窗口中有几个可拖动的矩形,每

我对我的混合行为、动作和触发器的小集合非常满意——它们易于使用且功能强大。但我仍然不知道如何避免在每个元素的基础上应用它们。例如,如果我有这样的行为:

<Rectangle>
    <i:Interaction.Behaviors>
        <il:MouseDragElementBehavior/>
    </i:Interaction.Behaviors>
</Rectangle>

我的窗口中有几个可拖动的矩形,每个矩形都必须有上面的标记才能拖动。我想做的是能够写出这样的东西:

<Style x:Key="RectangleStyle" TargetType="{x:Type Rectangle}">
    <Setter Property="i:Interaction.Behaviors" 
        Value="il:MouseDragElementBehavior"/>
</Style>

它可以是样式、模板或其他避免行为或动作标记重复的方法。到目前为止,我提出的最佳解决方案是为容器创建一个特殊的行为(当附加时,它会枚举附加到子事件的子事件)。
有什么想法吗?

您可以创建自己的类,该类继承自
矩形
,并在那里应用行为。

我还没有尝试过,但我可能会创建一个可以保存行为集合的附加属性。在该属性的属性更改处理程序中,我将枚举集合并将每个行为添加到real interaction.Behaviors属性中。有点乱,但应该能用

更新
如果没有更多的工作,这种方法将无法工作:问题是行为和触发器一次只能附加到一个对象。这可能就是为什么使用样式应用它们的限制首先存在的原因。要使其正常工作,您需要创建某种触发器或行为工厂。

我遇到了同样的问题,我正在研究如何创建附加属性来解决Blend SDK的这个缺点。

在这种情况下,我甚至不需要行为-我可以直接连接事件。不,我宁愿让我们的设计师做点什么…这是一个断开的链接。看见