我有一个ContentControl,上面有一个网格。Column 1将是一个TreeView,Column 2是一个拆分器,我已经将column 3设置为ContentPresenter。定义如下:
<ContentPresenter Grid.Column="2" Name="PlaceHolder" />如果我随后将我的ContentControl添加到一个页面中,并将一个项目添加到该ContentControl中,它不仅出现在第2列中,而是覆盖了整个ContentControl的宽度。下面是我向ContentPresenter添加内容的方法:
<MyNamespace:MyControlName>
<Button>Hello world!</Button>
</MyNamespace:MyControlName>如何让按钮只出现在第2列,而让第0列的TreeView正常显示?
提前谢谢。
发布于 2012-11-05 23:19:33
将ContentControl中的ContentControl.Content属性设置为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>https://stackoverflow.com/questions/13234771
复制相似问题