0

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

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

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

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

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

提前致谢。

4

1 回答 1

1

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

您需要将您的设置Grid为 theContentControl.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>
于 2012-11-05T15:19:33.467 回答