首页 > 解决方案 > WPF - 在 ContentPresenter 中停靠内容

问题描述

情况

我正在为 WPF 应用程序构建一个插件。父应用程序有一个 ContentPresenter,我的插件返回一个 UserControl。当父应用程序运行时,它会加载我的插件并将我的 UserControl 放在 ContentPresenter 中。

问题

问题是我的 UserControl 没有调整大小以适应 ContentPresenter,因此当 ContentPresenter 太小而无法显示所有内容时,我的 UserControl 就会被切断。如果调整应用程序的大小以使 ContentPresenter 变得比我的 UserControl 大,那么我的 UserControl 周围会出现一堆空白。

基本上,我希望我的 UserControl 就像在 DockPanel 中一样。

我试过的

ContentPresenter 和 UserControl 都已将水平和垂直对齐方式设置为 Stretch。

如果我将 UserControl 包装在 ViewBox 中,我可以达到预期的效果,但我真的不知道这是否是正确的方法。感觉就像我错过了一些基本的布局原则(这可能只是我在 Winforms 时代的遗留物)。是否有任何“正确”的方法可以在 ContentPresenter 元素中实现停靠效果?

编辑:我想强调这不是 ContentControl 与 ContentPresenter 的问题。我无法更改 ContentPresenter 元素,因为它是父应用程序的一部分。我唯一能控制的是我自己的插件的内容,它们被放置在 ContentPresenter 元素中。如果我需要通过在运行时向上遍历可视化树来调整属性,父应用程序的开发人员可能会允许我对 ContentPresenter 进行有限访问,但他们已经声明他们不希望插件在他们自己的范围之外导航控制。这与其说是技术限制,不如说是他们的条款和条件不允许的限制。

标签: c#wpf

解决方案


推荐阅读