我正在扩展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
命名空间。
感谢您的帮助。
答案 0 :(得分:2)
如果您仍在使用原始对象中的相同对象,即尚未创建新的FsCalendarDayButton,则只需要与复制它们完全相同的原始TargetTypes。
如果要在FsCalendar中使用它们时更改模板,可以为每个模板添加x:Key,然后在每次使用时添加StaticResource引用(如果它们是嵌套的,则可能不实用)在FsCalendar模板中自动生成实例,或者将它们隐藏在只有TargetType的类型中,然后将它们移动到Style或ControlTemplate的Resources中,这样只要加载了Style,它们就会被拉到。
如果您没有修改这些控件,那么根本不需要它们的样式副本 - 当您使用控件时,将会选择默认值,就像Button或ComboBox一样。