自定义控件模板的TargetTypes?

时间:2010-08-19 02:38:47

标签: wpf custom-controls

我正在扩展WPF Calendar控件,我已将Calendar,CalendarItem,CalendarButton和CalendarDayButton的控件模板复制到我的自定义控件的Generic.xaml。 Calendar控件模板的TargetType是我的自定义控件FsCalendar:

<!-- Calendar Control Template -->
<Style TargetType="{x:Type local:FsCalendar}">
...
</Style>

但其他控件模板呢?我是否将它们定位在原始日历上,就像这样?

<!-- CalendarDayButton Control Template -->
<Style TargetType="CalendarDayButton">
...
</Style>

或者我将其定位到我的自定义控件?如果是这样,我该怎么做?

我尝试将我的命名空间(local)放入声明中,但这不起作用。因此,就目前而言,TargetType被设置为默认的System.Windows.Controls.Primitives命名空间。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

如果您仍在使用原始对象中的相同对象,即尚未创建新的FsCalendarDayButton,则只需要与复制它们完全相同的原始TargetTypes。

如果要在FsCalendar中使用它们时更改模板,可以为每个模板添加x:Key,然后在每次使用时添加StaticResource引用(如果它们是嵌套的,则可能不实用)在FsCalendar模板中自动生成实例,或者将它们隐藏在只有TargetType的类型中,然后将它们移动到Style或ControlTemplate的Resources中,这样只要加载了Style,它们就会被拉到。

如果您没有修改这些控件,那么根本不需要它们的样式副本 - 当您使用控件时,将会选择默认值,就像Button或ComboBox一样。

相关问题