是否可以使用样式或模板应用于混合行为?(Is it possible to apply Blend

2019-07-31 19:05发布

我很高兴我的小交融的行为,行动和触发器的集合 - 它们很容易使用,功能强大。 但我仍然无法弄清楚如何避免将他们每个元素的基础上。 举例来说,如果我有一个行为,例如:

<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>

这可能是风格,模板,或其他一些方式来避免的行为或动作标记重复。 我想出了迄今被创造容器中的特殊行为的最佳解决方案(连接时,它枚举孩子连接到儿童的事件)。 有任何想法吗?

Answer 1:

我遇到了同样的问题,我贴在我的博客上如何创建附加属性来解决这个缺点的混合SDK的。



Answer 2:

我还没有尝试过,但我可能会做的就是创建一个附加属性,可容纳行为的集合。 在属性改变了财产的处理,我会列举收集和每个行为添加到真正的Interation.Behaviors财产。 这是一个有点乱,但它应该工作。

更新

这种方法将没有一个很好的协议更多的工作的工作:问题是,行为和触发器只能在同一时间连接到一个对象。 这可能是为什么在使用样式将他们限制在首位存在。 为了得到这个工作,你需要创建某种触发或行为的工厂。



Answer 3:

你可以创建自己的类,从继承Rectangle并应用行为存在。



文章来源: Is it possible to apply Blend behavior using style or template?