Slider的ThumbToolTipValueConverter带参数

时间:2016-07-25 10:59:24

标签: c# xaml win-universal-app

<Slider ThumbToolTipValueConverter="{StaticResource ThumbConverter}"/>

我需要根据ThumbToolTip更改Slider.Value中的值和ViewModel中的值(称为SecondValue)。

如何将SecondValue传递给ThumbConverter? (我如何在这里使用ConverterParameter?)

1 个答案:

答案 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中没有这些。所以这是我得到的最干净的。