Laden...

Binding funktioniert nicht

Erstellt von Exploiter vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.759 Views
E
Exploiter Themenstarter:in
1 Beiträge seit 2007
vor 16 Jahren
Binding funktioniert nicht

Hallo Leute,

bin gerade am verzweifeln, da ich den Fehler in folgendem Code einfach nicht finde. Ich habe ein Button Template erstellt und möchte nun, dass der Button beim Überfahren der Maus mit einem RadialGradientBrush eingefärbt wird.

Leider funktioniert dies nicht, der Button wird lediglich durchsichtig.


    <ControlTemplate x:Key="buttonTemplate" TargetType="Button">
        <Grid>
            <Ellipse x:Name="ellipse" StrokeThickness="4" Fill="{TemplateBinding Background}" Stroke="{TemplateBinding Foreground}"/>
            <Label Content="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="{TemplateBinding Foreground}"/>
        </Grid>
        <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter TargetName="ellipse" Property="Fill"> 
                   <Setter.Value>
                        <RadialGradientBrush Center="0.5,0.5" GradientOrigin="0.3,0.3" RadiusX="1" RadiusY="1">
                            <RadialGradientBrush.GradientStops>
                                <GradientStop Offset="0" Color="White" />
                                <GradientStop Offset="1" Color="{Binding Path=BorderBrush, RelativeSource={RelativeSource AncestorType={x:Type Button}}}"/>
                            </RadialGradientBrush.GradientStops>
                        </RadialGradientBrush> 
                    </Setter.Value> 
                </Setter>
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>

Diese Version dagegen funktioniert einwandfrei, der Fehler muss sich also in Zeile 13 befinden...


    <ControlTemplate x:Key="buttonTemplate" TargetType="Button">
        <Grid>
            <Ellipse x:Name="ellipse" StrokeThickness="4" Fill="{TemplateBinding Background}" Stroke="{TemplateBinding Foreground}"/>
            <Label Content="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="{TemplateBinding Foreground}"/>
        </Grid>
        <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter TargetName="ellipse" Property="Fill"> 
                   <Setter.Value>
                        <RadialGradientBrush Center="0.5,0.5" GradientOrigin="0.3,0.3" RadiusX="1" RadiusY="1">
                            <RadialGradientBrush.GradientStops>
                                <GradientStop Offset="0" Color="White" />
                                <GradientStop Offset="1" Color="Red"/>
                            </RadialGradientBrush.GradientStops>
                        </RadialGradientBrush> 
                    </Setter.Value> 
                </Setter>
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>

Schonmal vielen Dank im Voraus!

Mfg Exploiter

//P.S.: Mein erster Post.. 🙂

925 Beiträge seit 2004
vor 16 Jahren

Ich vermute mal, daß das damit zusammenhängt, daß dir "BorderBrush" eben genau das liefert. Einen "Brush". Und GradientStop.Color verlangt ein Objekt vom Typ "Color".