ContentPresenter问题

时间:2012-11-05 15:04:41

标签: c# wpf

我有一个ContentControl,我有一个网格。第1列是TreeView,第2列是拆分器,我已将第3列设置为ContentPresenter。定义如下:

<ContentPresenter Grid.Column="2" Name="PlaceHolder" />

如果我然后将ContentControl添加到页面并将项目添加到ContentControl,它不仅会出现在第2列中,而是跨越ContentControl的整个宽度。这是我向ContentPresenter添加内容的方式:

<MyNamespace:MyControlName>
    <Button>Hello world!</Button>
</MyNamespace:MyControlName>

如何让按钮仅显示在第2列并使第0列中的TreeView显示为正常?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您要将ContentControl.Content中的ContentControl属性设置为Grid,然后当您使用控件覆盖ContentControl.Content时将其设置为Button而不是

您需要将Grid设置为ContentControl.ContentTemplate而不是实际Content,并修改ContentPresenter显示Content属性

<ContentControl ...>
    <ContentControl.Template>
        <ControlTemplate TargetType="{x:Type ContentControl}">
            <Grid>
                ...
                <ContentPresenter Grid.Column="2" Name="PlaceHolder" 
                                  Content="{TemplateBinding Content}" />
                ...
            </Grid>
        </ControlTemplate>
    </ContentControl.Template>
</ContentControl>