绑定和VisualStateManager不能一起工作

时间:2013-04-22 06:54:58

标签: wpf binding visualstatemanager

我有VisualStateManager来控制状态何时发生,控件已启用:

这是州(字符串)的属性:

states:StateManager.VisualStateProperty="{Binding SomeProp}"

此处为VisualStateManager

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup x:Name="VisualStateGroup">
        <VisualState x:Name="MyName">
            <Storyboard>                
                <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.IsEnabled)" Storyboard.TargetName="MyTextBox">
                    <DiscreteBooleanKeyFrame KeyTime="0" Value="True" />
                </BooleanAnimationUsingKeyFrames>
            </Storyboard>
        </VisualState>
        <VisualState x:Name="HerName">
            <Storyboard>
               ...
            </Storyboard>
        </VisualState>
        <VisualState x:Name="This">
            <Storyboard>
               ...
            </Storyboard>
        </VisualState>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

这是我的文本框:

<TextBox Name="MyTextBox" />

我的问题是:当我将TextBox添加到以下行时会发生什么:

IsEnable= {Binding isProp}// isProp = bool

我看到它的方式,它消除了IsEnable的{​​{1}}而没有引用他,只引用TextBox

这是真的吗?他们都有办法吗?

1 个答案:

答案 0 :(得分:3)

在您的情况下,动画将优先于绑定,但只有动画的时间轴正在运行。也就是说,当视觉状态为“MyName”时,动画将控制IsEnabled属性;否则,绑定将会。

您可能对此Dependency Property Value Precedence列表感兴趣。绑定计为“本地值”,优先级低于动画。