Ich möchte die Hintergrundfarbe einer Schaltfläche in seinen normalen, Mouse-Over und gedrückten Status in verschiedenen Schattierungen von Grün ändern. Ich bin gezwungen, den folgenden grotesk ausführlichen Button.Template
zu meinem Knopf hinzuzufügen, so dass ich die Attribute ändern kann, um Binding
anstelle von TemplateBinding
zu verwenden, so dass meine Auslöser (in der Button.Style
) tatsächlich wirksam werden, anstatt wegen der Kompilierung ignoriert zu werden Zeit Natur von TemplateBinding
. Gibt es überhaupt eine Möglichkeit, diese beiden Attribute für ein Aero-Thema sauberer zu überschreiben als die gesamte Vorlagenbindung in ihrer Gesamtheit zu wiederholen? XAML folgt:Wie ändern Sie TemplateBindings in Bindungen in einer Steuerelementvorlage Steuerelement, ohne die gesamte Steuerelementvorlage zu wiederholen
<Window x:Class="ButtonMouseOver.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button>
Hello
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Microsoft_Windows_Themes:ButtonChrome SnapsToDevicePixels="true"
x:Name="Chrome" Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}" RenderDefaulted="{TemplateBinding IsDefaulted}"
RenderMouseOver="{Binding IsMouseOver}" RenderPressed="{Binding IsPressed}"
>
<ContentPresenter Margin="{TemplateBinding Padding}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Microsoft_Windows_Themes:ButtonChrome>
</ControlTemplate>
</Button.Template>
<Button.Style>
<Style TargetType="Button">
<Setter Property="Background" Value="LightGreen"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property = "Background" Value="Green"/>
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter Property = "Foreground" Value="DarkGreen"/>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</Grid>
</Window>
Wichtiger Hinweis: Die Steuervorlage nur für die Aero-Design notwendig ist. Bei anderen Themen wird nur der Button.Style alleine ausgeführt.
Ich verstehe nicht, warum Sie nicht einen Stil erstellen, um damit umzugehen und es einfach auf jede Schaltfläche anzuwenden, wie Sie für richtig halten? Ich vermisse das Stück, das diesem Verhalten widersteht ...? Scheint wie eine Standard-Button-Stil für mich ... –
Der Teil, der dieses Verhalten widersteht, ist der Aero-Chrom. Ich habe eine Notiz hinzugefügt, um diese Tatsache hervorzuheben. –