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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top