Sliderとは?
Sliderとは、ボリュームのレベルを調整するようなコントロールで、目盛りとつまみのあるものです。ユーザーに任意の値を調整させるときなどに使えます。
コントロールのイメージ
Sliderの使い方
TickPlacement
目盛りの位置はTickPlacementプロパティで設定し、次の4種類から選べます。
- Both
- 上下に目盛りが表示される(画面左の1番目)
- BottomRight
- 下に目盛りが表示される(画面左の2番目)
- None
- 目盛りなし(画面左の3番目)
- TopLeft
- 上に目盛りが表示される(画面左の4番目)
- 設定しないとき
- Noneと同じ(画面左の5番目)
IsSnapToTickEnabled
近くの値にスナップするときはTrueにします。スナップとは例えば,移動の最小単位を10と設定している場合、カーソル移動で17を指定すると、一番近い最小単位の20が選択されます。
TickFrequency
カーソルでドラッグしながらレベルを調整するときの、増減する値を指定します。
SmallChange
キーボードの矢印キーを押して、レベルを調整するとき増減する値を設定します。
LargeChange
スライダーの任意の位置をクリックしたときに増減する値を設定します。
Orientation
スライダーの向きを縦か横で指定できます。
サンプルコード
横向きスライダー
TickPlacementの4種類と指定なしをそれぞれ記述した例を示します。
<StackPanel>
<Slider TickPlacement="Both" Width="200" Foreground="Black" Margin="10"/>
<Slider TickPlacement="BottomRight" Width="200" Foreground="Black" Margin="10"/>
<Slider TickPlacement="None" Width="200" Foreground="Black" Margin="10"/>
<Slider TickPlacement="TopLeft" Width="200" Foreground="Black" Margin="10"/>
<Slider Width="200" Foreground="Black" Margin="10"/>
</StackPanel>
上から順番に、目盛りの位置が変化していることが確認できます。また、指定しない場合はNoneと同じ状態であることがわかります。
<Slider Width="200"
TickPlacement="Both"
Foreground="Black"
Margin="10"
IsSnapToTickEnabled="True"
TickFrequency="10"
SmallChange="20"
LargeChange="50"
Minimum="0"
Maximum="100"
ValueChanged="Slider_ValueChanged"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<TextBlock Text="SliderValue:"/>
<TextBlock x:Name="ASlider"/>
</StackPanel>
private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
ASlider.Text = e.NewValue.ToString();
}
- IsSnapToTickEnabledをTrueにしているので、近くの値にスナップされます。
- つまみをもってドラッグするとTickFrequencyの値「10」単位で移動します。
- キーボードの左右キーで移動させた場合はSmallChangeの「20」単位で移動します。
- スライダー上をクリックしてレベルを調整する場合はLargeChangeの「50」単位で移動します。
- スライダーの最小値と最大値はMinimumとMaximumで指定するので0から100までが選択できる状態になっています。
- スライダーの下に、スライダーの値を表示するためのTextBlockを設置しています。値が変わるとSlider_ValueChangedで値を設定しています。
縦向きスライダー
<Slider Width="200"
TickPlacement="Both"
Foreground="Black"
Margin="10"
IsSnapToTickEnabled="False"
TickFrequency="10"
SmallChange="20"
LargeChange="50"
Minimum="0"
Maximum="100"
ValueChanged="BSlider_ValueChanged"
Orientation="Vertical"
Height="120"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<TextBlock Text="SliderValue:"/>
<TextBlock x:Name="BSlider"/>
</StackPanel>
private void BSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e)
{
BSlider.Text = e.NewValue.ToString();
}
- IsSnapToTickEnabledをFalseにしているのでスナップされないことが確認できます。
- OrientationをVerticalにすることで、スライダーが縦向きになります。
サンプルコード全体
<Window x:Class="WPF018.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPF018"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="550">
<Grid>
<StackPanel Orientation="Horizontal">
<StackPanel>
<Slider TickPlacement="Both" Width="200" Foreground="Black" Margin="10"/>
<Slider TickPlacement="BottomRight" Width="200" Foreground="Black" Margin="10"/>
<Slider TickPlacement="None" Width="200" Foreground="Black" Margin="10"/>
<Slider TickPlacement="TopLeft" Width="200" Foreground="Black" Margin="10"/>
<Slider Width="200" Foreground="Black" Margin="10"/>
</StackPanel>
<StackPanel>
<Slider Width="200"
TickPlacement="Both"
Foreground="Black"
Margin="10"
IsSnapToTickEnabled="True"
TickFrequency="10"
SmallChange="20"
LargeChange="50"
Minimum="0"
Maximum="100"
ValueChanged="Slider_ValueChanged"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<TextBlock Text="SliderValue:"/>
<TextBlock x:Name="ASlider"/>
</StackPanel>
<Slider Width="200"
TickPlacement="Both"
Foreground="Black"
Margin="10"
IsSnapToTickEnabled="False"
TickFrequency="10"
SmallChange="20"
LargeChange="50"
Minimum="0"
Maximum="100"
ValueChanged="BSlider_ValueChanged"
Orientation="Vertical"
Height="120"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<TextBlock Text="SliderValue:"/>
<TextBlock x:Name="BSlider"/>
</StackPanel>
</StackPanel>
</StackPanel>
</Grid>
</Window>
using System.Windows;
namespace WPF018
{
///
/// MainWindow.xaml の相互作用ロジック
///
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e)
{
ASlider.Text = e.NewValue.ToString();
}
private void BSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e)
{
BSlider.Text = e.NewValue.ToString();
}
}
}
- C#WPFの道#1!WPFのプロジェクト作成方法をわかりやすく解説!
- C#WPFの道#2!StackPanelの使い方をわかりやすく解説!
- C#WPFの道#3!Gridの使い方をわかりやすく解説!
- C#WPFの道#4!コントロールの名前の付け方をわかりやすく解説!
- C#WPFの道#5!イベントの定義の仕方をわかりやすく解説!
- C#WPFの道#6!リソースとStaticResourceの定義と使い方をわかりやすく解説!
- C#WPFの道#7!コントロールのスタイル定義のやり方をわかりやすく解説!
- C#WPFの道#8!グループごとのスタイル定義とBasedOnでの継承のやり方!
- C#WPFの道#9!SQLiteの使い方をわかりやすく解説!
- C#WPFの道#10!ListViewの使い方をわかりやすく解説!
- C#WPFの道#11!ListViewのフィルタリングの方法を解説!
- C#WPFの道#12!SQLiteとListViewでマスタ設定画面の作成!
- C#WPFの道#13!Buttonに画像と文字を並べる方法とRepeatButtonとToggleButton
- C#WPFの道#14!CheckBoxとIsThreeState、Indeterminateの使い方
- C#WPFの道#15!RadioButtonの書き方と使い方を解説
- C#WPFの道#16!Expanderの書き方と使い方を解りやすく解説
- C#WPFの道#17!GroupBoxの書き方と使い方を解りやすく解説
- C#WPFの道#18!Slider(スライダー)の書き方と使い方を解りやすく解説
- C#WPFの道#19!ProgressBarの書き方と使い方を解りやすく解説
- C#WPFの道#20!ComboBoxの書き方と使い方を解りやすく解説
- C#WPFの道#21!ListBoxの書き方と使い方を解りやすく解説
- C#WPFの道#22!TabControlの書き方と使い方を解りやすく解説
- C#WPFの道#23!TreeViewの書き方と使い方を解りやすく解説
- C#WPFの道#24!TextBlock,TextBoxの改行と文字の加工を解説
- C#WPFの道#25!Menuの書き方と使い方をわかりやすく解説!
- C#WPFの道#26!ToolBarの書き方と使い方をわかりやすく解説!
- C#WPFの道#27!StatusBarの書き方と使い方をわかりやすく解説!
- C#WPFの道#28!WrapPanelの書き方と使い方をわかりやすく解説!
- C#WPFの道#29!DockPanelの書き方と使い方をわかりやすく解説!
- C#WPFの道#30!Canvasの書き方と使い方をわかりやすく解説!
