Ich arbeite an einer wiederverwendbaren Vorlage für ein WPF ComboBox
. Ich bin in der Lage, dynamisch die Schriftfarbe zu ändern, den Hintergrund und Grenze durch diese Verweise in der Vorlage:C# WPF XAML RelativeSource Verweis auf ComboBox.Resources Element
Foreground="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ComboBox}, Path=Foreground}"
BorderBrush="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ComboBox}, Path=BorderBrush}"
Background="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ComboBox}, Path=Background}"
Diese einfach waren, da ich Eigenschaften hatte ich verweisen konnte.
<ComboBox Margin="90,62,0,0" Height="26" Width="302"
HorizontalAlignment="Left" VerticalAlignment="Top"
Focusable="False" IsReadOnly="True" MaxDropDownHeight="202"
Foreground="White" Background="SteelBlue" BorderBrush="White"
Style="{StaticResource ComboBoxFlatStyle}"
ItemContainerStyle="{StaticResource ComboBoxItemFlatStyle}">
Was würde ich tun möchte, ist der Verweis auf eine ähnliche Weise folgende:
<ComboBox.Resources>
<SolidColorBrush x:Key="ComboBoxHighlightBrush" Color="RoyalBlue" />
</ComboBox.Resources>
Ist es möglich, eine Ressource innerhalb der Steuerung zu verweisen? Ich möchte wirklich diese Vorlage auf einem anderen ComboBox
mit unterschiedlichen Farben verwenden können.
Foreground = "{StaticResource ComboBoxHighlightBrush}" funktioniert auf alles in Ihrer Combobox, haben Sie das gemeint? – Milan
@Milan Nein, ich habe einen Stil in meinen Anwendungsressourcen. –
Foreground = "{DynamicResource ComboBoxHighlightBrush}" funktioniert, wenn Ihr Pinsel in app.xaml-Ressourcen definiert ist. Ich bekomme jetzt, dass Sie tatsächlich auf eine Ressource zugreifen möchten, die nicht innerhalb Ihrer Anwendungsressourcen, sondern in einer Combobox innerhalb Ihrer Anwendungsressourcen ist. Aber ist das nicht ein Zeichen dafür, dass Sie wirklich wollen, dass dieser Pinsel global zugänglich ist? – Milan