是否有可能绑定到XAML中的system . windows . interactivitybehavior

本文关键字:system windows interactivitybehavior 中的 XAML 有可能 绑定 是否 | 更新日期: 2023-09-27 17:54:51

我有一个想要跟踪控件动作的行为,并且我想从我的ViewModel中读取该行为的状态。

当前我正在做这个:

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

是否有一种方法,我可以绑定到行为作为ViewModel或应用程序的其他部分的属性,而不是在XAML实例化它?语法是什么?

是否有可能绑定到XAML中的system . windows . interactivitybehavior

行为是一个纯粹的UI概念,ViewModel不应该知道关于它的任何事情。但是,您可以通过绑定使行为更新ViewModel的属性。只需在行为上声明一个依赖属性,并像这样绑定它:

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

(当然,如果有意义的话,您也可以使用TwoWay绑定)

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

也许这个关于如何在样式中设置行为的问题可以给你一个如何实现这一点的想法。