我正在尝试将双手柄滑块修改为通用双模型。
[更新]:XAML 代码:
<Slider x:Name="LowerSlider" DataContext="this" Template="{StaticResource simpleSlider}" Margin="10,0,0,0"
IsEnabled="{Binding Path=IsUpperSliderEnabled}"
Minimum="{Binding Path=Minimum}"
Maximum="{Binding Path=Maximum}"
Value="{Binding Path=LowerValue}"
SmallChange="{Binding Path=SmallChange}"
LargeChange="{Binding Path=LargeChange}" />
<Slider x:Name="UpperSlider" DataContext="this" Template="{StaticResource simpleSlider}" Margin="10,0,0,0"
IsEnabled="{Binding Path=IsUpperSliderEnabled}"
Minimum="{Binding Path=Minimum}"
Maximum="{Binding Path=Maximum}"
Value="{Binding Path=UpperValue}"
SmallChange="{Binding Path=SmallChange}"
LargeChange="{Binding Path=LargeChange}" />
C#代码隐藏:
#region Dependency Property - Minimum
public Double Minimum
{
get { return (Double)GetValue(MinimumProperty); }
set { SetValue(MinimumProperty, value); }
}
public static readonly DependencyProperty MinimumProperty =
DependencyProperty.Register("Minimum", typeof(Double), typeof(DualHandleSlider), new UIPropertyMetadata(0.0));
#endregion
#region Dependency Property - Lower Value
public Double LowerValue
{
get { return (Double)GetValue(LowerValueProperty); }
set { SetValue(LowerValueProperty, value); }
}
public static readonly DependencyProperty LowerValueProperty =
DependencyProperty.Register("LowerValue", typeof(Double), typeof(DualHandleSlider), new UIPropertyMetadata(0.0));
#endregion
#region Dependency Property - Upper Value
public Double UpperValue
{
get { return (Double)GetValue(UpperValueProperty); }
set { SetValue(UpperValueProperty, value); }
}
public static readonly DependencyProperty UpperValueProperty =
DependencyProperty.Register("UpperValue", typeof(Double), typeof(DualHandleSlider), new UIPropertyMetadata(5.0, new PropertyChangedCallback(OnUpperValueChanged)));
public static void OnUpperValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
}
#endregion
#region Dependency Property - Maximum
public Double Maximum
{
get { return (Double)GetValue(MaximumProperty); }
set { SetValue(MaximumProperty, value); }
}
public static readonly DependencyProperty MaximumProperty =
DependencyProperty.Register("Maximum", typeof(Double), typeof(DualHandleSlider), new UIPropertyMetadata(10.0, new PropertyChangedCallback(OnMaximumChanged)));
public static void OnMaximumChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
DualHandleSlider slider = (DualHandleSlider)d;
if (slider.IsUpperValueLockedToMax)
{
slider.UpperValue = (Double)e.NewValue;
}
}
#endregion
#region Dependency Property - Small Change
public double SmallChange
{
get { return (double)GetValue(SmallChangeProperty); }
set { SetValue(SmallChangeProperty, value); }
}
// Using a DependencyProperty as the backing store for SmallChange. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SmallChangeProperty =
DependencyProperty.Register("SmallChange", typeof(double), typeof(DualHandleSlider),
new UIPropertyMetadata(1.0, new PropertyChangedCallback(OnSmallChangePropertyChanged)));
protected static void OnSmallChangePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
System.Diagnostics.Debug.WriteLine(e.NewValue);
}
#endregion
#region Dependency Property - Large Change
public double LargeChange
{
get { return (double)GetValue(LargeChangeProperty); }
set { SetValue(LargeChangeProperty, value); }
}
// Using a DependencyProperty as the backing store for LargeChange. This enables animation, styling, binding, etc...
public static readonly DependencyProperty LargeChangeProperty =
DependencyProperty.Register("LargeChange", typeof(double), typeof(DualHandleSlider),
new UIPropertyMetadata(1.0, new PropertyChangedCallback(OnLargeChangePropertyChanged)));
protected static void OnLargeChangePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
System.Diagnostics.Debug.WriteLine(e.NewValue);
}
#endregion
问题是,该控件不会以任何方式对实现控件时设置的属性做出反应。即使以编程方式编辑属性也不起作用?我认为这是一个愚蠢的错误,但我已经为这段代码倾注了一段时间。有任何想法吗?
编辑:仍然没有运气!输出中没有关于绑定错误的内容。