是否可以绑定到XAML中的System.Windows.Interactivity.Behavior?

时间:2011-05-02 20:27:16

标签: c# wpf mvvm

我有一个行为,我想跟踪控件的操作,我想从我的ViewModel读取该行为的状态。

目前我正在这样做:

    <MyControl>
        <i:Interaction.Behaviors>
            <b:MyBehavior />
        </i:Interaction.Behaviors>
    </MyControl>

有没有办法可以将行为绑定到ViewModel的属性或应用程序的其他部分,而不是在XAML中实例化它?语法是什么?

2 个答案:

答案 0 :(得分:2)

行为是纯粹的UI概念,ViewModel不应该对它有任何了解。但是,您可以通过绑定使行为更新ViewModel的属性。只需在行为上声明一个依赖项属性并将其绑定如下:

<MyControl>
    <i:Interaction.Behaviors>
        <b:MyBehavior MyProperty="{Binding MyViewModelProperty, Mode=OneWayToSource}" />
    </i:Interaction.Behaviors>
</MyControl>

(如果合理的话,你也可以使用TwoWay绑定)

答案 1 :(得分:0)

Interactivity的大部分逻辑都是内部或私有的,例如附加的属性 TriggersBehaviors都是私密的。 Interaction类仅提供获取行为和触发器的方法,并且没有setter方法。我真的怀疑有很多事情可以做,至少使用现有的类。

也许this question on how to set bahaviors in a style可以让您了解如何实现这一点。