WPF - Определение размеров UserControl на Custom Canvas - PullRequest
0 голосов
/ 26 февраля 2009

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

Моя проблема в том, что у меня есть пользовательский элемент управления, размер которого не изменяется. Я установил Высота и Ширина на пользовательском элементе управления (работает при падении). Но затем, когда размер элемента управления на холсте изменяется, визуальный размер остается прежним (маркеры изменения размеров меняются). Я вижу, как изменяется свойство высоты (usercontrol.height) при изменении размера элемента управления. Но опять же, внешний вид элемента управления остается прежним.

У меня была мысль, что внутренний контейнер в пользовательском элементе управления должен быть связан с usercontrol.height, но это, похоже, не помогло. (или, может быть, у меня не было права связывания).

Если на том же холсте, например, перетаскиваемым элементом управления является элемент управления Image, я могу установить явную высоту для перетаскивания, и все изменится, как и должно. Так что это похоже на UserControl.

Так что мне нужно сделать что-то особенное с UserControls, чтобы визуализировать размер? Должен ли я использовать явные высоту и ширину, чтобы все это началось?

Спасибо за любую помощь.

Ответы [ 2 ]

2 голосов
/ 26 февраля 2009

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

Система очень логичная. Пенни не займет много времени. Извините за косвенный ответ, но я не верю, что в вашем вопросе достаточно информации, чтобы действительно объяснить, что происходит.

Вы также можете посмотреть свойства HorizontalAlignment и VerticalAlignment.

0 голосов
/ 26 февраля 2009

Не эксперт WPF, но я считаю, что вам нужно включить автоматическую настройку размеров для достижения сценария, который вы ищете. Это делается путем установки высоты / ширины элемента управления в Double.NaN, который по сути говорит: «У меня нет определенного размера». После этого размер элемента управления должен измениться, чтобы занять доступное пространство в зависимости от необходимости элемента управления.

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