如何仅覆盖自定义控件中的 ItemTemplate
我想创建一个派生自 ComboBox
的自定义控件,但是如果我从 Visual Studio 模板创建自定义控件,它会创建一个默认的 Style
控件,然后我必须打开 MSDN ComboBox
的 ControlTemplate
,然后在 generic.xaml 中再次重新创建整个 ComboBox
样式
我想要做的是,我想创建一个从 ComboBox
派生的自定义控件,在 generic.xaml 中我只想定义一个 ItemTemplate
而不是整个 ControlTemplate
。
但是,如果我保留该行
static MyComboBox()
{
DefaultStyleKeyProperty.
OverrideMetadata(typeof(MyComboBox),
new FrameworkPropertyMetadata(
typeof(MyComboBox)));
}
,那么如果我从 generic.xaml 中删除 ControlTemplate
,那么我根本看不到任何内容,但是如果我在 generic.xaml 中定义关键 ItemTemplate
,应该如何做我初始化静态构造函数以便仅反映 ItemTemplate
?
当然,我可以从 msdn 帮助中重新设计 xaml 主题,但是有没有简单的方法可以做到这一点?
I want to create a Custom Control derived from ComboBox
, however if I create custom control from visual studio template, it creates a default Style
of Control and I have to then open MSDN's ControlTemplate
of ComboBox
and then recreate the entire ComboBox
style once again in a generic.xaml
What I want to do is, I want to create a custom control derived from ComboBox
and in the generic.xaml I only want to define an ItemTemplate
and not entire ControlTemplate
.
However if I keep the line
static MyComboBox()
{
DefaultStyleKeyProperty.
OverrideMetadata(typeof(MyComboBox),
new FrameworkPropertyMetadata(
typeof(MyComboBox)));
}
Then I dont see anything at all if I remove the ControlTemplate
from generic.xaml, however if I define key ItemTemplate
in generic.xaml, how should I initialize my static constructor in order to refelct only ItemTemplate
?
Sure I can redesign the xaml theme from msdn help but isnt there any easy way to do it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我最近编写了自己的自定义组合框,它仅更改控件的 ItemTemplate。组合框样式的其余部分继承自默认组合框。
在自定义控件构造函数中:
然后在 generic.xaml 中:
这里的关键是设置样式的 BasedOn 属性以引用标准组合框控件。
希望这有帮助!
I recently wrote my own custom combobox that only changes the ItemTemplate of the control. The rest of the combobox style is inherited from the default combobox.
In your custom control constructor:
And then in your generic.xaml:
The key here is setting the style's BasedOn property to reference the standard combobox control.
Hope this helps!