RangeSlider
(또는 더 간단히 말해서 2 개의 엄지 손가락이있는 슬라이더)의 구현에서 이와 동일한 문제가있는 것 같습니다.WPF 범위 슬라이더 바인딩되지 않음
엄지 손가락을 모두 datacontext에 바인딩하고 그 바인딩을 양방향으로하고 싶습니다. 불행히도, 나는 단지 슬라이더의 위치를 SET에 바인딩 할 수있는 것 같습니다. 마우스로 그들을 움직이면 그들은 구속력을 잃어 버립니다.
몇 가지 범위 슬라이더를 사용했지만 간단하게 유지하려면이 예제에서 thejoyofcode.com을 사용합니다. (나는 그것을 수정하지 않았으므로 지금은 여기에 포함시키지 않고 도움이된다면 할 수있다.) 프레임 워크 슬라이더 ("MinSlider"및 "MaxSlider")도 동일한 데이터 소스에 바인딩되도록하기 위해 아래의 XAML을 사용하여 소비합니다. 내가 프레임 워크 슬라이더를 이동하면
는 바운드 항목의 모든 범위 슬라이더를 포함하여, 그들을 따라,하지만 난 범위 슬라이더에 엄지 손가락 중 하나를 이동하는 경우 그것은 하지 갱신 데이터 소스 또는 프레임 워크 슬라이더를한다.
내 창 XAML ...
<Separator></Separator>
<controls:RangeSlider x:Name="Slider"
Minimum="10"
Maximum="20"
LowerValue="{Binding Min, UpdateSourceTrigger=PropertyChanged}"
UpperValue="{Binding Max, UpdateSourceTrigger=PropertyChanged}"
/>
<TextBlock Text="{Binding LowerValue, ElementName=Slider}"/>
<TextBlock Text="{Binding UpperValue, ElementName=Slider}"/>
<Separator></Separator>
<Slider x:Name="MaxSlider" Minimum="10" Maximum="20" Value="{Binding Max}"/>
<TextBlock Text="{Binding Value, ElementName=MaxSlider}"/>
<Separator></Separator>
<TextBlock Text="{Binding Min}"/>
<TextBlock Text="{Binding Max}"/>
</StackPanel>
</Window>
... 그리고 MYSOURCE 클래스 ... 당신이
BindingMode=TwoWay
을 설정해야하기 때문에
public class MySource : INotifyPropertyChanged
{
private double _min;
public double Min
{
get { return _min; }
set
{
_min = value;
RaisePropertyChanged("Min");
}
}
private double _max;
public double Max
{
get { return _max; }
set
{
_max = value;
RaisePropertyChanged("Max");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
var handler = this.PropertyChanged;
if (handler != null)
{
handler(this, e);
}
}
protected void RaisePropertyChanged(String propertyName)
{
OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
}
코드 숨김에서 최소 및 최대를 변경하면 슬라이더의 위치가 변경됩니까? –