如何在嵌套的ControlTemplate中配置Contentpresenter?

时间:2012-03-27 08:46:46

标签: wpf xaml

我有以下代码:

<Setter Property="Template">
  <Setter.Value>
    <ControlTemplate TargetType="{x:Type ListBoxItem}">
      <Button>
        <Button.Template>
          <ControlTemplate>
            <DockPanel>
              <Image Source="{...}"/>
              <ContentPresenter .../>
            </DockPanel>               
          </ControlTemplate>
        </Button.Template>
      </Button>
    </ControlTemplate>
  </Setter.Value>
</Setter>

我需要模板内的按钮才能绑定。嵌套模板定义外观。

问题: <ListBoxItem Content="Start"/>不适用于上述代码。我需要类似root Contentpresenter的东西,它引用按钮模板中的Contentpresenter。我怎样才能做到这一点?

提前致谢!

1 个答案:

答案 0 :(得分:2)

<Setter Property="Template">
  <Setter.Value>
    <ControlTemplate TargetType="{x:Type ListBoxItem}">
      <Button>
        <Button.Template>
          <ControlTemplate>
            <DockPanel>
              <Image Source="{...}"/>
              <ContentPresenter Content="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}, Path=Content}"/>
            </DockPanel>               
          </ControlTemplate>
        </Button.Template>
      </Button>
    </ControlTemplate>
  </Setter.Value>
</Setter>