2

Silverlight でテンプレート化された/カスタム コントロールを作成しようとしています。

ベース コントロールはSystem.Windows.Controls.Button. ボタンには次の表示状態があります。

<vsm:VisualStateManager.VisualStateGroups>
    <!--Define the states for the common states. The states in a 
                            VisualStateGroup are mutually exclusive to each other.-->
    <vsm:VisualStateGroup x:Name="CommonStates">
        <!--Define the VisualStates in this VistualStateGroup.-->
        <vsm:VisualState x:Name="Normal"/>
        <vsm:VisualState x:Name="MouseOver" />
        <vsm:VisualState x:Name="Pressed" />
        <vsm:VisualState x:Name="Disabled" />
    </vsm:VisualStateGroup>
    <!--Define the states for the focus states. The states in a 
                            VisualStateGroup are mutually exclusive to each other.-->
    <vsm:VisualStateGroup x:Name="FocusStates">
        <!--Define the VisualStates in this VistualStateGroup.-->
        <vsm:VisualState x:Name="Focused" />
        <vsm:VisualState x:Name="Unfocused" />
    </vsm:VisualStateGroup>
</vsm:VisualStateManager.VisualStateGroups>

カスタム コントロールには別の状態が必要ですMouseButtonUp(MouseButtonDownは事前定義された状態で表すことができますPressed)。ここでは、MouseButtonUp状態はデフォルトで状態として解釈されますが、状態は状態とは異なる動作MouseOverをしたいと考えています。MouseButtonUpMouseOver

MouseButtonUpこの視覚的な状態を追加するにはどうすればよいですか? (MouseButtonUp状態は、ユーザーがマウスを離した後、ユーザーが移動を開始する前にのみ存在します。

ところで: カスタム コントロールまたはユーザー コントロールを使用する必要がありますか? この2つについて、私は非常に混乱してきました。どちらも多くの場合に機能するようです。

どうもありがとう。

更新: このMouseButtonUp状態を追加すると、次のような視覚的な遷移を行うことができます。

<vsm:VisualTransition From="Pressed" To="MouseButtonUp" GeneratedDuration="0:0:5" />

または:

<vsm:VisualTransition From="MouseButtonUp" To="MouseOver" GeneratedDuration="0:0:5" />
4

1 に答える 1

2

以下の行は、xaml で Visual-State を作成します。

    <vsm:VisualState x:Name="MouseButtonUp">
        ...Your code for animation
    </vsm:VisualState>

それがすべてではありません。実行制御を強制的にこの Visual-State にしない限り、これは役に立ちません。さて、どうやってそれをしますか?方法は次のとおりです。

    VisualStateManager.GoToState(this, "MouseButtonUp", true);

上記のコードは、xaml の「MouseButtonUp」VisualState 定義で定義したアニメーションを実行します。マウスが MousebuttonUp 状態になったと思われる場所で、上記のコード ステートメントを呼び出します。

于 2011-10-14T07:28:04.900 に答える