我有一个行为,我想跟踪控件的操作,我想从我的ViewModel读取该行为的状态。
目前我正在这样做:
<MyControl>
<i:Interaction.Behaviors>
<b:MyBehavior />
</i:Interaction.Behaviors>
</MyControl>
有没有办法可以将行为绑定到ViewModel的属性或应用程序的其他部分,而不是在XAML中实例化它?语法是什么?
答案 0 :(得分:2)
行为是纯粹的UI概念,ViewModel不应该对它有任何了解。但是,您可以通过绑定使行为更新ViewModel的属性。只需在行为上声明一个依赖项属性并将其绑定如下:
<MyControl>
<i:Interaction.Behaviors>
<b:MyBehavior MyProperty="{Binding MyViewModelProperty, Mode=OneWayToSource}" />
</i:Interaction.Behaviors>
</MyControl>
(如果合理的话,你也可以使用TwoWay
绑定)
答案 1 :(得分:0)
Interactivity
的大部分逻辑都是内部或私有的,例如附加的属性
Triggers
和Behaviors
都是私密的。 Interaction
类仅提供获取行为和触发器的方法,并且没有setter方法。我真的怀疑有很多事情可以做,至少使用现有的类。
也许this question on how to set bahaviors in a style可以让您了解如何实现这一点。