Wpf ControlTemplate中的UserControl
我有一个Telerik互动程序的ControlTemplate,我覆盖如下:Wpf ControlTemplate中的UserControl,wpf,telerik,controltemplate,Wpf,Telerik,Controltemplate,我有一个Telerik互动程序的ControlTemplate,我覆盖如下: <ControlTemplate TargetType="{x:Type ctrl:Tile}"> <Border> <local:UserControl> <ContentPresenter Content="{TemplateBinding Content}" ContentTemplate="{TemplateBind
<ControlTemplate TargetType="{x:Type ctrl:Tile}">
<Border>
<local:UserControl>
<ContentPresenter Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
</local:UserControl>
</Border>
</ControlTemplate>
我的用户控件看起来像:
<DockPanel>
<!-- some content -->
<ContentPresenter/>
</DockPanel>
ControlTemplate不显示UserControl的内容
如果我将控件模板更改为:
<ControlTemplate TargetType="{x:Type ctrl:Tile}">
<Border>
<StackPanel>
<local:UserControl/>
<ContentPresenter Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
</StackPanel>
</Border>
</ControlTemplate>
它将找到内容并适当放置。似乎ControlTemplate一旦嵌套在我的UserControl中就找不到内容了。有什么我可能做错的吗
请注意,这些控件模板项出现在ItemsPresenter中。您将
用户控件
视为一个基本的内容控件
(如按钮
),与实际情况略有不同。以按钮
为例,当您将子项(即文本块
)添加到按钮
元素中时,该元素实际上将文本块
设置为按钮的内容
属性。它的呈现方式是通过按钮
的控制模板
,其中包括一个内容呈现器
,用于将内容
注入其中。可视化树的结尾如下所示:
<Button>
-start Template
<Border>
<ContentPresenter>
-start Content
<TextBlock>
<Border>
<local:UserControl>
<local:UserControl.OtherContent>
<ContentPresenter Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
</local:UserControl.OtherContent>
</local:UserControl>
</Border>
然后在UserControl
的XAML中,您需要显式设置ContentPresenter
绑定(您只能在ContentControls
的模板中免费获得它们):
如果您需要ContentTemplate
、ContentTemplateSelector
或ContentStringFormat
,您还需要为它们添加属性和绑定
<DockPanel>
<!-- some content -->
<ContentPresenter Content="{Binding Path=OtherContent, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"/>
</DockPanel>