Как создать пользовательский элемент управления, размер которого может быть больше его созданного размера с помощью WPF - PullRequest
1 голос
/ 23 декабря 2008

Я создал пользовательский элемент управления с помощью WPF и хочу добавить его в окно. Я сделал это, но не могу сделать так, чтобы у моего элемента управления была высота, превышающая высоту его собственного файла xaml. Мои MaxWidth и MaxHeight равны бесконечности, но я не могу сделать элемент управления выше того, что есть в его файле xaml.

Чтобы обойти это, я должен сделать весь свой пользовательский контроль огромным, чтобы я мог масштабировать их так, как мне хочется. Это кажется неправильным, я должен что-то упустить.

Ответы [ 6 ]

2 голосов
/ 26 декабря 2008

Снятие высоты и ширины - путь. Конструктор (blend) имеет некоторые специальные свойства ширины и высоты конструктора, которые они могут использовать для проектирования, но не устанавливают высоту для среды выполнения.

xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 mc:Ignorable="d" d:DesignWidth="412" d:DesignHeight="230"

Это xaml, который будет в верхней части Window / UserControl. Это должно помочь объяснить вещи.

0 голосов
/ 26 декабря 2008

Мне не известны никакие атрибуты ширины / высоты для дизайнера VS, если вы это используете. Однако я довольно эффективно использовал атрибуты MinWidth / MinHeight в своем xaml, чтобы справиться с ситуацией, которую, я думаю, вы описываете.

0 голосов
/ 23 декабря 2008

Хорошо, после некоторого дальнейшего расследования я ошибся. это Сетка, которая вызывает проблему. Если я установлю сетку Width и Heigth на Auto, тогда все будет работать нормально, но я теряю возможность использовать конструктор.

У меня все выравнивания установлены на Растянуть как для Сетки, так и для ее элементов управления.

Итак, в итоге, все работает нормально, если я установил Grid.Width = Auto и Grid.Height = Auto, но когда я это сделаю, я потеряю возможность использовать конструктор.

0 голосов
/ 23 декабря 2008

Проблема может заключаться в том, что внутренние элементы управления вашего пользовательского элемента управления не распространяются на ваш элемент управления. Попробуйте установить HorizontalAlignment = "Stretch" или Width = "Auto" на внутренних элементах управления, или вы можете попробовать связать свойство Width.

0 голосов
/ 23 декабря 2008

Если я удаляю высоту и ширину в файле XAML элементов управления, я теряю возможность использовать конструктор для своего пользовательского элемента управления. Короткий ответ, который решил мою проблему, но теперь я не могу использовать конструктор для пользовательских элементов управления. Не похоже, чтобы мне было лучше.

0 голосов
/ 23 декабря 2008

Почему вы хотите, чтобы ваш элемент управления имел высоту, превышающую высоту его собственного XAML-файла? Не могли бы вы просто удалить высоту в файле XAML элемента управления и явно установить высоту элемента управления при объявлении его в других файлах (или коде) XAML, которые его используют?

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