VisualStateManager クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
状態と、コントロールの状態間を遷移するためのロジックを管理します。
public ref class VisualStateManager : System::Windows::DependencyObject
public class VisualStateManager : System.Windows.DependencyObject
type VisualStateManager = class
inherit DependencyObject
Public Class VisualStateManager
Inherits DependencyObject
- 継承
例
次の例では、Rectangle を作成し、VisualStateManager.VisualStatesGroups
添付プロパティに CommonStates
という名前の VisualStateGroup を追加します。 この例では、CommonStates
VisualStateGroup内の MouseOver
オブジェクトと Normal
VisualState オブジェクトを定義します。 ユーザーがマウス ポインターを Rectangleの上に移動すると、1/2 秒で赤から緑に変わります。 ユーザーが四角形からマウスを離すと、Grid はすぐに赤に戻ります。
Normal
状態では、Storyboardが定義されていないことに注意してください。
Rectangle が MouseOver
状態から Normal
状態に遷移すると、MouseOver
の Storyboard が停止し、SolidColorBrush の Color プロパティが赤色に戻るため、Storyboard は必要ありません。
<Rectangle Name="rect"
Width="100" Height="100"
MouseEnter="rect_MouseEvent"
MouseLeave="rect_MouseEvent">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup Name="MouseStates">
<VisualState Name="MouseEnter">
<Storyboard>
<ColorAnimation To="Green"
Storyboard.TargetName="rectBrush"
Storyboard.TargetProperty="Color"/>
</Storyboard>
</VisualState>
<VisualState Name="MouseLeave" />
<VisualStateGroup.Transitions>
<VisualTransition To="MouseLeave" GeneratedDuration="00:00:00"/>
<VisualTransition To="MouseEnter" GeneratedDuration="00:00:00.5">
<VisualTransition.GeneratedEasingFunction>
<ExponentialEase EasingMode="EaseOut" Exponent="10"/>
</VisualTransition.GeneratedEasingFunction>
</VisualTransition>
</VisualStateGroup.Transitions>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Rectangle.Fill>
<SolidColorBrush x:Name="rectBrush" Color="Red"/>
</Rectangle.Fill>
</Rectangle>
次の例は、前の例で定義したイベント ハンドラーを示し、GoToElementState メソッドを呼び出して状態間を遷移します。 前の例の四角形が ControlTemplateの一部であった場合は、GoToState メソッドを呼び出す必要があります。
private void rect_MouseEvent(object sender, MouseEventArgs e)
{
if (rect.IsMouseOver)
{
VisualStateManager.GoToElementState(rect, "MouseEnter", true);
}
else
{
VisualStateManager.GoToElementState(rect, "MouseLeave", true);
}
}
Private Sub rect_MouseEvent(ByVal sender As Object, ByVal e As MouseEventArgs)
If rect.IsMouseOver Then
VisualStateManager.GoToElementState(rect, "MouseEnter", True)
Else
VisualStateManager.GoToElementState(rect, "MouseLeave", True)
End If
End Sub
注釈
VisualStateManager を使用すると、コントロールの状態、コントロールが特定の状態にある場合、およびコントロールの状態が変更されたときの外観を指定できます。 たとえば、Button が押された場合と押されていない場合の外観が若干異なる場合があります。
Button が定義する 2 つの状態は、押されたとき ("Pressed"
) とそうでない場合 ("Normal"
) に対応します。 状態にある場合のコントロールの外観は、VisualStateによって定義されます。
VisualState には、コントロールがその状態のときにコントロールの外観がどのように変化するかを指定する Storyboard オブジェクトのコレクションが含まれています。 コントロールに表示状態を追加するには、コントロールの添付プロパティ VisualStateManager.VisualStateGroups
設定します。 各 VisualStateGroup には、相互に排他的な VisualState オブジェクトのコレクションが含まれています。 つまり、コントロールは常に各 VisualStateGroupの 1 つの状態になります。
VisualStateManager では、コントロールが特定の状態に入るタイミングを指定することもできます。 状態を変更するために呼び出すメソッドは、シナリオによって異なります。
ControlTemplateで VisualStateManager を使用するコントロールを作成する場合は、GoToState メソッドを呼び出します。
VisualStateManagerを使用するコントロールを作成する方法の詳細については、「カスタマイズ可能な外観を持つコントロールの作成を参照してください。
ControlTemplate の外部で VisualStateManager を使用する場合 (たとえば、UserControl または単一の要素で VisualStateManager を使用する場合)、GoToElementState メソッドを呼び出します。 どちらの場合も、VisualStateManager は、関連する状態に関連付けられているストーリーボードを適切に開始および停止するために必要なロジックを実行します。 たとえば、コントロールが状態 (State1
と State2
) を定義し、それぞれにストーリーボードが関連付けられているとします。 コントロールが State1
にあり、GoToState または GoToElementStateに State2
を渡すと、VisualStateManager はストーリーボードを State2
で開始し、State1
でストーリーボードを停止します。
Windows Presentation Foundation (WPF) に含まれるコントロールは、VisualStateManager を使用して表示状態を変更します。 WPF に含まれるコントロールの ControlTemplate を作成するときに、コントロールの ControlTemplate に VisualState オブジェクトを追加して、コントロールの外観を特定の状態で指定できます。 WPF に含まれているコントロールの表示状態の名前については、「コントロールのスタイルとテンプレートの
状態間を遷移するための独自のロジックを実装する場合は、VisualStateManagerから継承し、GoToStateCore メソッドをオーバーライドし、カスタム ロジックを使用するコントロールに VisualStateManager.CustomVisualStateManager 添付プロパティを設定する必要があります。
コンストラクター
VisualStateManager() |
VisualStateManager クラスの新しいインスタンスを初期化します。 |
フィールド
CustomVisualStateManagerProperty |
CustomVisualStateManager 依存関係プロパティを識別します。 |
VisualStateGroupsProperty |
VisualStateGroups 依存関係プロパティを識別します。 |
プロパティ
DependencyObjectType |
このインスタンスの CLR 型をラップする DependencyObjectType を取得します。 (継承元 DependencyObject) |
Dispatcher |
この DispatcherObject が関連付けられている Dispatcher を取得します。 (継承元 DispatcherObject) |
IsSealed |
このインスタンスが現在シールされているかどうかを示す値を取得します (読み取り専用)。 (継承元 DependencyObject) |
添付プロパティ
CustomVisualStateManager |
コントロールの状態間を遷移する VisualStateManager オブジェクトを取得または設定します。 |
VisualStateGroups |
VisualStateGroup オブジェクトのコレクションを取得または設定します。 |
メソッド
適用対象
.NET