2016-07-25 8 views
0
<Slider ThumbToolTipValueConverter="{StaticResource ThumbConverter}"/> 

Ich brauche in ThumbToolTip auf Slider.Value und Wert von Viewmodel (SecondValue genannt) auf der Grundlage Wert zu ändern. Wie kann ich SecondValue an ThumbConverter übergeben? (Wie kann ich ConverterParameter hier?)Slider des ThumbToolTipValueConverter mit dem Parameter

Antwort

1

Etwas nach dem Vorbild dieses:

Converter -

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(); 
    } 
} 

die Nutzung -

<Slider VerticalAlignment="Top"> 

     <Slider.ThumbToolTipValueConverter> 

      <converters:ThumbConverter SecondValue="{Binding SecondValue}" /> 

     </Slider.ThumbToolTipValueConverter> 

    </Slider> 

Beachten Sie - die visuelle Änderung wird nur auftreten, wenn sich der Slider-Wert ändert. Während die Klasse selbst über die Änderungen von SecondValue informiert wird, wird die visuelle Änderung nur auftreten, wenn Sie den Wert des Schiebereglers ändern.

Die Situation schreit nach der Implementierung von MultiValueConverter, aber wir haben diese nicht in UWP. also das ist das sauberste was ich habe.