Silverlight 4 - Wie kann ich Schaltfläche Hintergrundfarbe ändern, wenn mit einem impliziten Schaltfläche Stil konzentriert?
-
27-09-2019 - |
Frage
Ich bin sehr viel Schwierigkeiten haben, zu versuchen, etwas zu erreichen, die trivial sein sollte. Ich verwende eine Implizite Button Style in einer globalen Datei XAML-Ressource definiert. Ich möchte nur die Hintergrundfarbe der ändern fokussierte Taste , um mit einem Color rot. Ich habe versucht, eine Reihe von verschiedenen Kombinationen in Storyboard.TargetProperty
und Storyboard.TargetName
und nichts hat funktioniert. Wie kann ich das erreichen?
Vielen Dank im Voraus.
<Style TargetType="Button" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid x:Name="grid" RenderTransformOrigin="0.5,0.5">
<Grid.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Grid.RenderTransform>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="FocusStates">
<VisualState x:Name="Focused" >
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="Button" From="Green" To="Red" Duration="00:00:01" />
</Storyboard>
</VisualState>
<VisualState x:Name="Unfocused"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
...
Lösung
Da habe ich dies mit zwei Grenzen nicht den Rest Ihres Style I haben und Content. Das belebt den Hintergrund der Schaltfläche von Grün auf Rot einmal fokussiert.
<Style TargetType="Button" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid x:Name="grid" RenderTransformOrigin="0.5,0.5">
<Grid.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Grid.RenderTransform>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="FocusStates">
<VisualState x:Name="Focused">
<Storyboard>
<ColorAnimation Storyboard.TargetName="border"
Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
From="Green"
To="Red"
Duration="0:0:1" />
</Storyboard>
</VisualState>
<VisualState x:Name="Unfocused"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border BorderBrush="Transparent" BorderThickness="1" CornerRadius="4">
<Border x:Name="border" Background="White" BorderBrush="Black" BorderThickness="1" CornerRadius="4">
</Border>
</Border>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Andere Tipps
Einige gute Antworten hier:
Stil des Mouseover auf einer Silverlight / WPF-Taste http://forums.silverlight.net/forums/p/186402/427878. aspx