1

我必须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

在我看来,它消除了IsEnableof theTextBox而不是指他,只指State.

这是真的?有没有办法让它们都起作用?

4

1 回答 1

3

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

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

于 2013-04-26T15:19:33.413 回答