在xaml中引用基类型控件模板

时间:2009-12-07 02:25:20

标签: wpf combobox styles controltemplate

我有一个来自ComboBox的控件,我想使用ComboBox ControlTemplate,只需在xaml中设置一些值,即ItemContainerStyle。下面的代码不起作用,我打算将基本ComboBox控件模板应用于此代码的最后一个setter没有做任何事情。

   <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>

我想从ComboBox派生,但我不想包含整个控件模板。我甚至不想触摸控件模板。我确实想要更改ItemContainerStyle,我可以从代码中做到这一点,但如果我不需要更好的话。

我想要这个的另一个原因是因为想要访问ComboBox控件模板的内部成员,即TextBoxPopup。通常我会在OnApplyTemplate的覆盖中访问这样的成员。

我觉得我走错了路,开导我的感觉。

1 个答案:

答案 0 :(得分:0)

误报,

我在generic.xaml

中没有包含此文件的链接

哦,我没有必要设置模板值

   <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>

样式将仅设置与基本样式不同的属性。所以我不想改变控制模板,我根本就不设置它。调用OnApplyTemplate,我可以访问ComboBox控件模板的内部。