2013-07-18 3 views
0

현재 WPF의 슬라이더를 사용하고 있습니다. 내 GUI 창에는 몇 가지 방법으로 함께 작동해야하는 2 개의 슬라이더가 있습니다. slider1은 항상 slider2보다 작거나 같아야하고 slider2은 항상 slider1보다 커야합니다. 이 문제를 해결하기 위해 C# 코드 숨김을 사용하려는 첫 번째 시도는 내 previous question에 설명되어 있습니다. 이 질문은 내 코드를 컴파일해야하지만 실행 중에 내 프로그램에서 시각적 인 변화를주지 않았습니다. 이 슬라이더를 내가 원하는 방식으로 움직이게하는 이상적인 방법은 무엇일까요?슬라이더의 값을 일치시키는 방법

감사합니다.

답변

1

당신도 쉽게이 일을 할 수 있습니다 ..

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



    } 

    private void slider2_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
    { 
     if (slider1 == null || slider2 == null) 
      return; 
     if (slider2.Value <= slider1.Value) 
     { 
      slider1.Value = slider2.Value; 
     } 


    } 
+0

도움 주셔서 감사합니다. –

2

당신의 ViewModel이 2 곳 Slider1Slider2이 말할 수 있습니다 당신의 XAML은 다음과 같이 보입니다 : Slider1 또는 Slider2이 변경 될 때

<Slider Value="{Binding Path=Slider1}"/> 
<Slider Value="{Binding Path=Slider2}"/> 

는 다음 뷰 모델에 로직을 수행 할 수 있습니다

public class MyClass: INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 

    protected void OnPropertyChanged([CallerMemberName] string propertyName = "") 
    { 
     var handler = PropertyChanged; 
     if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 
    } 

    private double _slider1; 

    public double Slider1 
    { 
     get { return _slider1; } 
     set 
     { 
      if (_slider1 != value) 
      { 
       _slider1 = value; 
       OnPropertyChanged("Slider1"); 
       if (_slider1 > Slider2) Slider2 = _slider1; 
      } 
     } 
    } 

    private double _slider2; 

    public double Slider2 
    { 
     get { return _slider2; } 
     set 
     { 
      if (_slider2 != value) 
      { 
       _slider2 = value; 
       OnPropertyChanged("Slider2"); 
       if (_slider2 < Slider1) Slider1 = _slider2; 
      } 
     } 
    } 
} 
관련 문제