Ich habe das Steuerelement ToggleButton mit einem Control wie so angepasst:Teil der Steuerungstemplate in gestylten Steuerelementen ändern?
<StackPanel>
<StackPanel.Resources>
<Style x:Key="OptionBarButton" TargetType="{x:Type ToggleButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Border Padding="18,12,18,12" Background="{TemplateBinding Background}">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="True" />
<Condition Property="IsMouseOver" Value="True" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="DarkBlue" />
</MultiTrigger.Setters>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="True" />
<Condition Property="IsMouseOver" Value="False" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="SkyBlue" />
</MultiTrigger.Setters>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="False" />
<Condition Property="IsMouseOver" Value="False" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="#88000000" />
</MultiTrigger.Setters>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="False" />
<Condition Property="IsMouseOver" Value="True" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="#F0000000" />
</MultiTrigger.Setters>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</StackPanel.Resources>
<ToggleButton Style="{StaticResource OptionBarButton}">
<Image Source="../Assets/icons/action.png" Height="26" RenderOptions.BitmapScalingMode="Fant" />
</ToggleButton>
<ToggleButton Style="{StaticResource OptionBarButton}">
<Image Source="../Assets/icons/action2.png" Height="26" RenderOptions.BitmapScalingMode="Fant" />
</ToggleButton>
</StackPanel>
Das funktioniert gut, aber ich würde jetzt einige Teile der Vorlage in einigen der Stil Kontrollen ändern möchten, nämlich die IsChecked Farbzustände (SkyBlue/DarkBlue).
Ist es möglich, diese Farben in der Vorlage zu ändern/zu übergeben, wenn Sie sie verwenden? Ich weiß, dass ich angefügte Eigenschaften verwenden kann und/oder die ToggleButton-Klasse untergliedern kann (indem ich ihr Abhängigkeitseigenschaften hinzufüge), aber ich frage mich, ob es nicht einen idiomatischen Weg gibt, dies zu lösen, vielleicht nur mit xaml. Das Schreiben von benutzerdefiniertem Code in C# scheint für einen so einfachen Anwendungsfall etwas übertrieben zu sein.
Ah, das ist großartig. Ich kann definitiv sehen, dass dies auch in anderen Szenarien nützlich ist. Vielen Dank! – monoceres