<Slider ThumbToolTipValueConverter="{StaticResource ThumbConverter}"/>
我需要根据ThumbToolTip
更改Slider.Value
中的值和ViewModel中的值(称为SecondValue
)。
如何将SecondValue
传递给ThumbConverter
?
(我如何在这里使用ConverterParameter
?)
答案 0 :(得分:1)
有些事情如下:
转换器 -
public class ThumbConverter : DependencyObject, IValueConverter
{
public double SecondValue
{
get { return (double)GetValue(SecondValueProperty); }
set { SetValue(SecondValueProperty, value); }
}
// Using a DependencyProperty as the backing store for SecondValue. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SecondValueProperty =
DependencyProperty.Register("SecondValue", typeof(double), typeof(ThumbConverter), new PropertyMetadata(0d));
public object Convert(object value, Type targetType, object parameter, string language)
{
// assuming you want to display precentages
return $"Precentage: {double.Parse(value.ToString()) / SecondValue}";
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
用法 -
<Slider VerticalAlignment="Top">
<Slider.ThumbToolTipValueConverter>
<converters:ThumbConverter SecondValue="{Binding SecondValue}" />
</Slider.ThumbToolTipValueConverter>
</Slider>
注意 - 只有在Slider的值发生变化时才会发生视觉变化。 虽然类本身将在SecondValue的更改中得到通知,但只有在您更改滑块的值时才会发生视觉更改。
这种情况对MultiValueConverter的实施感到尖叫,但我们在UWP中没有这些。所以这是我得到的最干净的。