我有一个来自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
控件模板的内部成员,即TextBox
和Popup
。通常我会在OnApplyTemplate
的覆盖中访问这样的成员。
我觉得我走错了路,开导我的感觉。
答案 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控件模板的内部。