Blend での Silverlight コントロールのスライダー コントロールのスタイル処理のヒント
組み込みの Slider コントロール テンプレートを使用して、カスタム Slider テンプレートを作成できます。 既定の Slider コントロール テンプレートは、次のように表示されます。
Slider テンプレートのパーツ
Slider テンプレートには、2 つのパーツ セット (垂直方向のスライダー用のセットと水平方向のスライダー用のセット) が含まれます。 パーツ名には、スライダーの方向に応じて、"vertical" または "horizontal" という語が接頭辞として付けられます。
ヒント
テンプレートのパーツを見るには、テンプレートを変更するときに [パーツ] パネルを開きます。
パーツ名 |
オブジェクトの種類 |
---|---|
HorizontalTemplate VerticalTemplate |
FrameworkElement |
HorizontalTrackLargeChangeDecreaseRepeatButton VerticalTrackLargeChangeDecreaseRepeatButton |
RepeatButton |
HorizontalThumb VerticalThumb |
Thumb |
HorizontalTrackLargeChangeIncreaseRepeatButton VerticalTrackLargeChangeIncreaseRepeatButton |
RepeatButton |
スライダーのヒント
テンプレート パーツ
これは、必須のパーツです。 template パーツには、特定の方向で Slider を形成するすべての要素が含まれています。
template を作成するには、サイズが [自動サイズ]、[自動サイズ]、[比例サイズ] の 3 つの列 (水平方向の場合) または行 (垂直方向の場合) を含む、HorizontalTemplate または VerticalTemplate という名前のグリッドを作成します。
Thumb パーツ
これは、必須のパーツです。 Thumb はスライダーの移動可能な要素です。
Thumb を表す 1 つまたは複数のオブジェクトを Thumb コントロール (HorizontalThumb または VerticalThumb) にするには、Thumb パーツを Root パーツの中央の列 (または行) に配置します。 次に、列 (または行) のサイズが Thumb に合わせて変更されるように Thumb パーツの Width プロパティと Height プロパティを設定します。
トラック
Thumb が往復する経路をトラックといいます。 トラックは、パーツではないので、必ずしも設定する必要はありません。
トラックを含めるには、トラックを表す 1 つまたは複数のオブジェクトを Template パーツの 3 つの列 (または行) すべてに行き渡るように配置します。
トラックに沿って Thumb を大きく動かす
ユーザーが Thumb のいずれかの側をクリックすると Thumb が大きく動くようにするには、RepeatButton コントロールを Thumb パーツのいずれかの側の 2 つの列 (または行) に配置して、VerticalLargeDecrease と VerticalLargeIncrease (または HorizontalLargeDecrease と HorizontalLargeIncrease) という名前を付けます。 RepeatButton が非表示で機能するように、Opacity を 0 に設定します。 または、Opacity が 0 の単一のオブジェクトを含むテンプレートを RepeatButton コントロールに適用することもできます。
Slider コントロールの状態
既定では、Slider コントロールは、以下に示す [CommonStates] 状態グループの 3 つの状態のいずれかになります。これらの状態は、Slider テンプレートを変更するときに、[状態] パネルに表示されます。
状態名 |
説明 |
---|---|
Normal |
Slider コントロールに対してユーザーが何も行わず、単に表示されているだけの状態。 |
MouseOver |
ユーザーが Slider コントロールの上にポインターを動かしたときの状態。 |
Disabled |
IsEnabled プロパティが False に設定されたときの Slider コントロールの状態。 |
Slider コントロールは、次の [FocusStates] 状態グループに属する 2 つの状態のいずれかになります。
状態名 |
説明 |
---|---|
Unfocused |
Slider コントロールがキーボードでフォーカスされていないときの状態。 |
Focused |
Slider コントロールがキーボードでフォーカスされたときの状態。 たとえば、アプリケーション内でユーザーが Tab キーを押してフォーカスを切り替えていき、Slider コントロールにフォーカスが移った場合が相当します。 |
ヒント
状態グループは、コントロールの表示状態を論理的に分類したものです。1 つのグループに属する複数の状態を同時に表示することはできません。たとえば、CommonStates グループには、ユーザーがマウスなどの入力デバイスで行う操作に関係のある状態が含まれています。1 つのグループ内で一度に表示できる状態は 1 つだけですが、別々のグループに属する状態を同時に表示することはできます。
状態を 1 つ選択すると、その状態の変更の記録が開始されます。 状態の記録を無効にするには、記録ボタン をクリックするか、[状態] パネルで [ベース] を選択します。 2 つの状態がアクティブになったときのコントロールの外観を変更するには、1 つのグループに属する状態のプレビューを固定しておき、別のグループに属する状態を変更します。
テンプレートのバインド
Background、BorderBrush、Foreground、BorderThickness、および Padding プロパティは、テンプレートにバインドすることができます。 詳細については、「Blend でオブジェクト プロパティをテンプレートに反映させる」を参照してください。
オブジェクトを Slider コントロールに変換するには
次の図は、 HorizontalThumb パーツの MouseOver 状態と Pressed 状態を含むスライダーのデザイン見本図(カンプ)です。
Normal
MouseOver
Pressed
Disabled
この例では、次の手順 2 で XAML コードを使用します。これは、上の図の Slider コントロール テンプレートを使用したカスタム スクロール バーの作成に相当します。
ヒント
以下の手順を実行する際に [デザイン] ビューと [コード] ビューの両方の変化を確認するには、[分割ビュー] をクリックします。
[コード] ビューで次のコードを見つけて、終了スラッシュ (/) を削除します。
<Grid x:Name="LayoutRoot" Background="White"/>
次のコードをコピーし、新しいプロジェクトで、手順 1 で見つけたコードの後に貼り付けます。
<Grid Width="146" Height="17" > <Rectangle x:Name="track" Fill="#FF3D3D3D" StrokeThickness="0" Margin="0,6" /> <Rectangle x:Name="thumb" Fill="Gray" RadiusX="3" RadiusY="3" Width="7"/> </Grid>
Grid の終了タグ (</Grid>) を、上記で張り付けたコードの最後に追加します。
[オブジェクトとタイムライン] パネルで Grid を右クリックして、[コントロールの作成] をクリックします。 [コントロールの作成] ダイアログ ボックスで [Slider]、[OK] の順にクリックします。
[コード] ビューで、前の手順で貼り付けたコードが新しい Slider のコードで置き換えられたことを確認します。 さらに、Blend により Grid から新しい Slider スタイルのテンプレートが作成され、そのテンプレートが Grid に適用されたことがわかります。
列を Template パーツ グリッドに追加するには、[デザイン] ビューでコントロールの上にある青いルーラーをクリックして、以下の図に示すように行を追加します。
図に示すように行を追加する場合、パーツは正しい行に配置されます。 Track の ColumnSpan は 3 になり、thumb は Column 1 に配置されます。
注意
番号は 0 から始まるので、3 つの行には 0 ~ 2 の番号が付けられます。
テンプレートのルートを HorizontalTemplate パーツにするには、[オブジェクトとタイムライン] パネルで [Grid] を右クリックして [Slider パーツの作成]、[HorizontalTemplate] の順にクリックします。 Grid の名前が HorizontalTemplate に変更されていることに注意してください。
[オブジェクトとタイムライン] パネルで thumb を右クリックして、[ScrollBar パーツの作成]、 [HorizontalThumb] の順にクリックします。
状態を [HorizontalThumb] パーツに追加するには、次の操作を行います。
[オブジェクトとタイムライン] パネルの [Thumb] をクリックします。
[状態] パネルで [MouseOver] をクリックします。
[プロパティ] パネルで [Fill] を「#FFCCCCCC」に設定します。
[状態] パネルに戻り、[ベース] をクリックし、状態の記録を終了します。
注意
状態の記録は、ドキュメント ウィンドウの左上隅にある記録モード インジケーター をクリックして終了することもできます。
[状態] パネルで [MouseOver] を右クリックして、[状態のコピー先]、[Pressed] の順にクリックします。
オフセットを作成するには、[状態] パネルで [States] が選択された状態で、[プロパティ] カテゴリの [変換] で [X] および [Y] を「1」に設定します。 [ベース] をクリックし、状態の記録を終了します。
[状態] パネルで [Normal] をクリックします。 [切り替え効果の追加] をクリックして、[Normal to MouseOver] をクリックします。 [切り替え効果の再生時間] を「.2」に設定します。 [ベース] をクリックし、状態の記録を終了します。
[オブジェクトとタイムライン] パネルで [スコープを <オブジェクト名> に戻す] をクリックして、Slider コントロール [SliderStyle1 (Slider Template)] のテンプレート編集モードに戻ります。
[オブジェクトとタイムライン] パネルの [HorizontalThumb] をクリックします。 [プロパティ] パネルの [レイアウト] カテゴリで、[Margin] の横にある [詳細オプション] をクリックして、[リセット] をクリックします。
[オブジェクトとタイムライン] パネルの [HorizontalTemplate] をクリックします。 [パーツ] パネルで [HorizontalTrackLargeChangeDecreaseRepeatButton] をダブルクリックして、そのパーツを作成し、HorizontalTemplate の子にします。 [プロパティ] パネルの [外観] カテゴリで [Opacity] を「0」に設定します。
[オブジェクトとタイムライン] パネルの [HorizontalTemplate] をクリックします。 [パーツ] パネルで [HorizontalTrackLargeChangeIncreaseRepeatButton] をダブルクリックして、そのパーツを作成し、[HorizontalTemplate] の子にします。 [プロパティ] パネルの [外観] カテゴリで [Opacity] を「0」に設定します。
行 0 および 1 に対して、[比例サイズ] アイコン を 2 回クリックして、[自動サイズ] アイコン を表示します。 行 2 に対して、[比例サイズ] アイコン が表示されていることを確認します。 中央列の区切り線をクリックして、[プロパティ] パネルで [詳細プロパティの表示] をクリックします。 [MinHeight] 値の右側にある [詳細オプション] をクリックして、[リセット] をクリックします。
[オブジェクトとタイムライン] パネルの [HorizontalTemplate] をクリックします。 [状態] パネルで [Disabled] をクリックします。 [プロパティ] パネルの [外観] カテゴリで [不透明度] を 50 に設定します。
Ctrl キーと Shift キーを押しながら B キーを押して、プロジェクトをビルドします。 ビルドが完了した後、F5 キーを押してプロジェクトを実行し、スクロール バーをテストします。
参照
Silverlight の Slider コントロールのプロパティとイベントの詳細については、MSDN の「Silverlight Control Gallery (Silverlight コントロール ギャラリー)」を参照してください。