Кажется, у меня такая же проблема с любой реализацией RangeSlider
(или, проще говоря, слайдер с 2 большими пальцами).WPF Range Slider не является обязательным
Я хочу связать оба больших пальца с текстом datacontext и иметь это привязку в 2-х направлениях. К сожалению, мне кажется, что я могу привязать SET только положения ползунков. Если я перемещаю их с помощью мыши, они теряют привязку.
Я использовал несколько слайдеров диапазона, но чтобы это было просто, в этом примере я использую один из thejoyofcode.com. (Я не изменял его, поэтому сейчас я не включаю его здесь, но могу, если это поможет). Я использую XAML ниже, с тем чтобы позволить слайдерам фреймворка (именуемым «MinSlider» и «MaxSlider») также привязываться к тем же источникам данных.
Когда я двигаю рамочные ползунки, все связанные пунктов следует за ними, в том числе ползунка диапазона, но затем, если я перееду один из больших пальцев на ползунке диапазона он делает не обновления источника данных или рамка слайдер.
My Window 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 ...
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));
}
}
Если вы измените значение Min и Max в коде, изменится ли положение ползунка? –