Laden...

Frage: ControlTemplate Button

Erstellt von hen.klemp vor 14 Jahren Letzter Beitrag vor 14 Jahren 814 Views
H
hen.klemp Themenstarter:in
13 Beiträge seit 2009
vor 14 Jahren
Frage: ControlTemplate Button

Hallo ich beschäftige mich Grade mit ControlTemplates.

Mein ControlTemplate sieht so aus

<Window.Resources>
         <ControlTemplate x:Key="RoundButton" TargetType="{x:Type Button}">
             <Grid MouseMove="Ellipse_MouseMove" MouseLeave="Ellipse_MouseLeave">
                 <Ellipse Width="60" Height="60" >
                     <Ellipse.Fill>
                         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                             <GradientStop  Color="White" Offset="0"/>
                             <GradientStop Color="{TemplateBinding Background}" offset="0.9"/>
                         </LinearGradientBrush>  
                   </Ellipse.Fill>
                 </Ellipse> 
                <Label Content="{TemplateBinding Content}" Foreground="Black" HorizontalAlignment="Center" VerticalAlignment="Center"/>
             </Grid> 
        </ControlTemplate>
     </Window.Resources>

Und so sieht mein Button aus

<Button Name="stop" Content="Stop" Template="{StaticResource RoundButton}" Grid.Column="2" Grid.Row="2" Background="Red" ></Button>

Mein Problem ist nur das der Background den ich im Button setze nicht übernommen wird.
Ich vermute es liegt daran das Background eine Pinsel bekommt und Color nur eine Farbe erwartet.

Kann mir das jemand weiterhelfen?

Foren Suche und google habe ich schon bemüht aber leider nichts gefunden was mir weiter geholfen hat.

gruß
Hendrik

U
1.578 Beiträge seit 2009
vor 14 Jahren

hast du das property "Background" selber im control als property oder willst du das vom original Button

beim ersteren muss das binding anders aussehen - beim zweiteren muss ich dich enttaeuschen - das geht nicht - du musst dann die farbe selber definieren

143 Beiträge seit 2008
vor 14 Jahren

Vielleicht mit einem Converter(IValueConverter). Sollte doch für einen SolidColorBrush möglich sein.

Gruß Timo

6.862 Beiträge seit 2003
vor 14 Jahren

Hallo,

Vielleicht mit einem Converter(IValueConverter)...

Vielleicht als kurze Ergänzung warum ein Converter notwendig ist: Background ist keine Farbe. Es ist ein Brush und wie Omit schon meinte kann man bei nem SolidColorBrush die Farbe nehmen und als Value vom Converter zurückgeben. Bei anderen Brushes ist dies aber nicht möglich da Brushes nicht zwangsläufig eine Farbe haben müssen. Nen Brush kann auch nen Video anzeigen z.B. - was will man da als Farbe nehmen? 😃

Baka wa shinanakya naoranai.

Mein XING Profil.