Referenzieren Basistypen Steuervorlage in XAML
-
13-09-2019 - |
Frage
Ich habe eine Kontrolle von ComboBox
abgeleitet, ich die ComboBox
ControlTemplate
verwenden möchten, und nur ein paar Werte in XAML, nämlich die ItemContainerStyle
gesetzt. Der folgende Code funktioniert nicht, der letzten Setter, die beabsichtigen, im die Basis ComboBox
Steuervorlage zu diesem anzuwenden, macht nichts.
<Style
TargetType="{x:Type local:EditingFilteringComboBox}"
BasedOn="{StaticResource {x:Type ComboBox}}">
<Setter
Property="IsEditable"
Value="False" />
<Setter
Property="DisplayMemberPath"
Value="DisplayValue" />
<Setter
Property="ItemContainerStyle"
Value="{StaticResource editingFilteringComboBoxListBoxItem}" />
<Setter
Property="Template"
Value="{StaticResource {x:Type ComboBox}}" />
</Style>
Ich möchte von ComboBox
ableiten, aber ich möchte nicht die ganze Kontrolle Vorlage für sie aufzunehmen. Ich möchte nicht einmal die Steuervorlage berühren. Ich will die ItemContainerStyle
ändern, die ich von Code tun könnte, aber viel schöner, wenn ich nicht haben.
Der andere Grund, warum ich das hier will, ist, da der Zugriff auf die internen Mitglieder des ComboBox
Kontrolle Vorlage zu wollen, nämlich die TextBox
und den Popup
. Normalerweise greife ich Mitglieder wie dies in der Überschreibung von OnApplyTemplate
.
Ich fühle mich wie im falschen Weg reisen, erleuchte mich sensei.
Lösung
Fehlalarm,
Ich bin nicht mit einem Link zu dieser Datei in meinem generic.xaml
ach ja, und ich habe nicht den Template Wert gesetzt haben
<Style
TargetType="{x:Type local:EditingFilteringComboBox}"
BasedOn="{StaticResource {x:Type ComboBox}}">
<Setter
Property="IsEditable"
Value="False" />
<Setter
Property="DisplayMemberPath"
Value="DisplayValue" />
<Setter
Property="ItemContainerStyle"
Value="{StaticResource editingFilteringComboBoxListBoxItem}" />
</Style>
Der Stil wird nur Eigenschaften festgelegt, die von dem Basis-Stil unterscheiden. so wie ich möchte nicht die Steuervorlage ändern einfach i gesetzt dont. OnApplyTemplate genannt wird, und ich die Interna der Steuer Vorlage des ComboBox zugreifen können.