我想创建一个源自ComboBox
的自定义控件,但是如果我从visual studio模板创建自定义控件,它会创建一个默认的Style
Control,然后我必须打开MSDN的{{1} } ControlTemplate
,然后再次在generic.xaml中重新创建整个ComboBox
样式
我想要做的是,我想创建一个源自ComboBox
的自定义控件,而在generic.xaml中,我只想定义ComboBox
而不是整个ItemTemplate
。
但是如果我保留这条线
ControlTemplate
然后,如果我从generic.xaml中删除static MyComboBox()
{
DefaultStyleKeyProperty.
OverrideMetadata(typeof(MyComboBox),
new FrameworkPropertyMetadata(
typeof(MyComboBox)));
}
,我根本看不到任何内容,但是如果我在generic.xaml中定义了键ControlTemplate
,我应该如何初始化我的静态构造函数以便refelct只有ItemTemplate
?
当然我可以从msdn帮助重新设计xaml主题,但有没有简单的方法呢?
答案 0 :(得分:1)
我最近编写了自己的自定义组合框,只更改了控件的ItemTemplate。组合框样式的其余部分继承自默认的组合框。
在自定义控件构造函数中:
static CustomComboBox()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomComboBox)
, new FrameworkPropertyMetadata(typeof(CustomComboBox)));
}
然后在你的generic.xaml中:
<Style TargetType="{x:Type local:CustomComboBox}" BasedOn="{StaticResource {x:Type ComboBox}}">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
**INSERT YOUR ITEM TEMPLATE HERE**
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
这里的关键是设置样式的BasedOn属性以引用标准组合框控件。
希望这有帮助!