1

State がいつ発生するか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ではTextBoxなく、 のみを参照しStateます。

これは本当ですか?そして、両方が機能する方法はありますか?

4

1 に答える 1

3

あなたの場合、アニメーションはバインディングよりも優先されますが、アニメーションのタイムラインが実行されている間だけです。つまり、表示状態が "MyName" の場合、アニメーションは IsEnabled プロパティを制御します。それ以外の場合は、バインディングが行われます。

このDependency Property Value Precedenceのリストに興味があるかもしれません。バインディングは「ローカル値」としてカウントされ、アニメーションよりも優先順位が低くなります。

于 2013-04-26T15:19:33.413 に答える