WPF: Data Binding Ein Schieberegler-Wert Zu Einem QuickInfo-Zeichenfolge für Inhalt, die In XAML

In einem C# - basierten WPF-UserControl habe ich eine Reihe von Schiebereglern zum anpassen der Rot -, Grün-und Blau-Werte der Farbe, element; im wesentlichen die UserControl ist ein color-picker. Ich habe eine Kombination XAML und C# - code-behind für die ToolTipOpening Event-Handler, der mir erlaubt, setzen Sie die einzelnen integer-Wert, der die Farbe Komponente Eigenschaft-Wert. Also, wenn ich die regler positioniert ist, zum einstellen der Menge von Rot in der Farbe, in der Mitte der Regler, der ToolTip-Anzeige "Rot: "125", da jede Farbe Komponente Eigenschaft Wert kann im Bereich von 0 bis 255. Die code-Fragmente unten für beide die XAML-und C# funktionieren wie erwartet:

XAML:

<UserControl x:Class="CustomColorPicker.ColorPickerUserControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             Name="colorPicker">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="50" />
            <ColumnDefinition Width="175" />
            <ColumnDefinition Width="100" />
        </Grid.ColumnDefinitions>

        <Label HorizontalAlignment="Right">Red:</Label>
        <Slider Grid.Row="0" Grid.Column="1" Name="sliderRed" Minimum="0" Maximum="255"
                Margin="{Binding ElementName=colorPicker, Path=Padding}"
                Value="{Binding ElementName=colorPicker, Path=Red}" 
                ToolTipOpening="OnColorSliderToolTipOpening" 
                ToolTip="Red: 0" />

        <Label Grid.Row="1" Grid.Column="0" HorizontalAlignment="Right">Green:</Label>
        <Slider Grid.Row="1" Grid.Column="1" Name="sliderGreen" Minimum="0" Maximum="255"
                Margin="{Binding ElementName=colorPicker, Path=Padding}"
                Value="{Binding ElementName=colorPicker, Path=Green}" 
                ToolTipOpening="OnColorSliderToolTipOpening" ToolTip="Green: 0" />

        <Label Grid.Row="2" Grid.Column="0" HorizontalAlignment="Right">Blue:</Label>
        <Slider Grid.Row="2" Grid.Column="1" Name="sliderBlue" Minimum="0" Maximum="255"
                Margin="{Binding ElementName=colorPicker, Path=Padding}"
                Value="{Binding ElementName=colorPicker, Path=Blue}" 
                ToolTipOpening="OnColorSliderToolTipOpening" ToolTip="Blue: 0" />

        <Rectangle Grid.Column="2" Grid.RowSpan="3"
                   Margin="{Binding ElementName=colorPicker, Path=Padding}"
                   Width="85" Stroke="Black" StrokeThickness="1">
            <Rectangle.Fill>
                <SolidColorBrush Color="{Binding ElementName=colorPicker, Path=Color}" />
            </Rectangle.Fill>
        </Rectangle>    
    </Grid>
</UserControl>

C#:

    private void OnColorSliderToolTipOpening(object sender, ToolTipEventArgs e)
    {
        Slider slider = (Slider) sender;

        string colorName = "N/A";
        int colorValue = 0;

        if (slider.Name == "sliderRed")
        {
            colorName = "Red";
            colorValue = (int) Color.R;                
        }

        else if (slider.Name == "sliderGreen")
        {
            colorName = "Green";
            colorValue = (int) Color.G;
        }

        else if (slider.Name == "sliderBlue")
        {
            colorName = "Blue";
            colorValue = (int) Color.B;
        }

        string colorTip =
        string.Format("{0}: {1}", colorName, colorValue.ToString());

        slider.ToolTip = colorTip;

        return;
    }

Gibt es eine Möglichkeit Sie zu beseitigen der code hinter, und legen Sie die ToolTip-Inhalt anzeigen, den gleichen string mit Hilfe der ToolTip.Inhalt und ToolTip.ContentStringFormat Eigenschaften in XAML nur, so dass für die Beseitigung der ToolTipOpening event-handler in der code-behind in C#? Ich habe versucht, die folgenden XAML-Code mithilfe der Datenbindung formatieren der Zeichenfolge für Inhalt, an der der Schieberegler im ToolTip:

XAML:

    <Slider Grid.Row="2" Grid.Column="1" Name="sliderBlue" Minimum="0" Maximum="255"
            Margin="{Binding ElementName=colorPicker, Path=Padding}"
            Value="{Binding ElementName=colorPicker, Path=Blue}">
        <Slider.ToolTip>
            <ToolTip
                Content="{Binding ElementName=colorPicker, Path=Blue}"
                ContentStringFormat="{}Blue: {0}" />
        </Slider.ToolTip>
    </Slider>

werden und der ToolTip Popup display ist leer:

WPF: Data Binding Ein Schieberegler-Wert Zu Einem QuickInfo-Zeichenfolge für Inhalt, die In XAML

Schreibe einen Kommentar