пользовательская панель wpf - PullRequest
0 голосов
/ 21 апреля 2011

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

Я не уверен, что это вообще возможно сделать, но я подумал, что спросить. Причина, по которой я не уверен, возможно ли это, заключается в том, что Panel не имеет никакого xaml, связанного с ними. Они измеряют и размещают детей в коде. Любые советы?


Будучи недостаточно ясным, я полагаю, что буду более конкретным:

Мне нужна панель, потому что я хочу расположить и измерить своих детей.

  1. Мера определяет СРЕДНЮЮ высоту / ширину всех дочерних элементов.
  2. Аранжировка помещает их в сетчатый рисунок и масштабирует до средней высоты / ширины. Я не хочу, чтобы они были ограничены, я хочу, чтобы они были соответственно увеличены или уменьшены.

У меня уже есть функция measureoverride, позволяющая найти среднюю высоту / ширину, но я не могу понять, как их масштабировать, в моемrangeoverride.

Ответы [ 2 ]

2 голосов
/ 21 апреля 2011

Вы не полностью указали, как хотите, чтобы ваша панель работала, поэтому я не могу дать вам образец панели, но я могу указать вам на рабочую панель, которая делает нечто похожее на то, что вы хотите сделать:

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

0 голосов
/ 21 апреля 2011

Даже после вашего обновления я согласен с Маркусом. Кажется, вам не нужна пользовательская панель. То, что вам нужно, это ItemsControl с UniformGrid в качестве ItemsPanel и ViewBox в качестве ItemsContainer. UniformGrid решает, как устроен ваш контейнер предметов. ViewBox обрабатывает растяжение и масштаб каждого элемента.

...