ContentControl的定义并不复杂,它主要包含这四个属性:Content,ContentTemplate,ContentTemplateSelector,ContentTransitions。 ContentTemplateSelector 如果需要根据Content动态地选择要使用的ContentTemplate,其中一个方法就是 public DataTemplateSelector ContentTemplateSelector 要使用ContentTemplateSelector,首先实现一个继承DataTemplateSelector的类,并重写protected override DataTemplate SelectTemplateCore "DataTemplateSelector" /> <Style TargetType="ContentControl"> <Setter Property="<em>ContentTemplateSelector</em> 注意:<em>ContentTemplateSelector</em>的缺点是需要创建多个模板,通常同一组数据的模板只有少部分的差别,可以在同一个模板中通过IValueConverter等方式显示不同的格式。
HorizontalAlignment="Center" VerticalAlignment="Top" Content="{Binding}"> <ContentPresenter.ContentTemplateSelector StaticResource TemplateNormal}" Template2="{StaticResource TemplateFull}" /> </ContentPresenter.ContentTemplateSelector DialogMode, Converter={helper:EnumExcludeConverter}, ConverterParameter='Mini'}"> <ContentPresenter.ContentTemplateSelector Template0="{StaticResource Template0}" Template1="{StaticResource Template1}" /> </ContentPresenter.ContentTemplateSelector
ElementName=UserControlPackIcon}"/> </DataTemplate> </UserControl.Resources> <UserControl.ContentTemplateSelector PathDataTemplate="{StaticResource keyPath}" ImageDataTemplate="{StaticResource keyImage}"/> </UserControl.ContentTemplateSelector
DockPanel> <ToggleButton x:Name="HeaderSite" ContentTemplate="{TemplateBinding HeaderTemplate}" ContentTemplateSelector
对于ContentControl,当我们决定绑定到哪个属性时,我们检查ContentTemplate和ContentTemplateSelector(WPF)。