Sliderコントロールは、値が変化するとValueChangedイベントを発行します。このイベントは、double型で変化後の新しい数値と変化前の古い数値が、引数として通知されます。
TextBlockを配置して、変化後の新しい数値を反映させてみましょう。プロジェクトを新規作成します。プロジェクト名は、SliderTestとします。ContentPanelにSliderとTextBlockを配置しました。
<phone:PhoneApplicationPage x:Class="SliderTest.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768" FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" Foreground="{StaticResource PhoneForegroundBrush}" SupportedOrientations="Portrait" Orientation="Portrait" shell:SystemTray.IsVisible="True"> <Grid x:Name="LayoutRoot" Background="Transparent"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock x:Name="ApplicationTitle" Text="SOFTBUILD" Style="{StaticResource PhoneTextNormalStyle}"/> <TextBlock x:Name="PageTitle" Text="Slider Test" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> </StackPanel> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <StackPanel Margin="-12,0" Orientation="Vertical" VerticalAlignment="Top"> <Slider Height="84" HorizontalAlignment="Center" Margin="0" x:Name="slider1" Width="480" ValueChanged="slider1_ValueChanged" /> <TextBlock x:Name="textBlock1" TextWrapping="Wrap" Text="0.00" HorizontalAlignment="Right" Margin="0,0,12,0"/> </StackPanel> </Grid> </Grid> </phone:PhoneApplicationPage>
SliderコントロールのValueChangedイベントハンドラ内で、e.NewValueをstring.Formatメソッドで小数点第2位まで四捨五入して、TextBlockのTextプロパティに代入しています。
using System.Windows; using Microsoft.Phone.Controls; namespace SliderTest { public partial class MainPage : PhoneApplicationPage { public MainPage() { InitializeComponent(); } // 値が変化すると通知されるイベントハンドラ private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) { // 値を小数点第2位までの表示にする textBlock1.Text = string.Format("{0:0.00}", e.NewValue); } } }
スライダーを動かすたびにValueChangedイベントが発生して数値を変化させることに成功しました。