Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf ControlTemplate中的UserControl_Wpf_Telerik_Controltemplate - Fatal编程技术网

Wpf ControlTemplate中的UserControl

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

我有一个Telerik互动程序的ControlTemplate,我覆盖如下:

<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>