Visual Studio/WPF > 컨트롤 > Slider > OnValueChanged()

운영 환경
Windows 7 Pro (32bit)
Microsoft Visual Studio 2017 Community
Sublime Text 2

@ WPF 4.5 입문 by 오타 카즈키
No.4496/9985

Slider 컨트롤은 임의의 범위의 수치로부터 1개를 유저에게 선택시키는 컨트롤입니다.

시도해 보았다.
Maximum 속성을 각 Slider로 설정하고 slider1을 변경할 때 다른 Slider의 값을 변경합니다.

이 때 어떤 이벤트를 사용할지는 초보자는 모른다.
API 문서도 「자주 사용하는 메소드」의 표시가 없기 때문에, 찾기에 고생한다.
문서를 만드는 측으로서는 그러한 "쉬움"의 고려도 필요할 것이다.

꾸준히 검색하여 OnValueChanged()가 해당하는 것으로 깨달았다.

XAML
<Window x:Class="_170426_t0930_radioButton.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:_170426_t0930_radioButton"
        mc:Ignorable="d"
        Title="MainWindow" Height="400" Width="525">
    <Grid Margin="0,30,0,0">
        <StackPanel>
            <Slider x:Name="slider1" Margin="0, 10" 
                    Maximum="100"
                    ValueChanged="slider1_ValueChanged"/>
            <Slider x:Name="slider2" Margin="0, 10"
                    Maximum="200"
                    />
            <Slider x:Name="slider3" Margin="0, 10"
                    Maximum="400"
                    />
        </StackPanel>
    </Grid>
</Window>

MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace _170426_t0930_radioButton
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            slider2.Value = slider1.Value;
            slider3.Value = slider1.Value;
        }
    }
}

좋은 웹페이지 즐겨찾기