WPF - закрепление контента внутри ContentPresenter - PullRequest
0 голосов
/ 06 июня 2018

Обстоятельства

Я создаю плагин для приложения 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, если мне нужно настроить свойство путем обхода визуального дерева во время выполнения, но они уже заявили, что не хотят, чтобы плагины перемещались за пределы их собственной области действия.управления.Это не столько техническое ограничение, сколько ограничение «их условия и условия не позволят».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...