Как я могу заставить пользовательские элементы управления самостоятельно изменять размеры? - PullRequest
1 голос
/ 11 сентября 2011

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

Для меня имеет смысл, что любой пользовательский элемент управления будет иметь «минимальный размер» (после которого единственным возможным решением будет уменьшить его как целое растровое изображение или добавить полосу прокрутки). У него также будет возможность использовать любую дополнительную экранную недвижимость, предоставленную ему.

Эллипсы не имеют минимального размера и могут свернуться до нулевого размера.

Итак, рассмотрим этот пример

<Grid>
    <StackPanel Orientation="Horizontal" Height="20">
        <Ellipse Fill="Blue"/>
        <Ellipse Fill="Green"/>
        <Ellipse Fill="BlueViolet"/>
    </StackPanel>
</Grid>

какое наименьшее количество кода xaml необходимо добавить для достижения следующих эффектов:

  • Заставьте их форсировать «минимальный размер» униформы 40. И динамически изменяйте размер равномерно.
  • Заставьте их форсировать «минимальный размер» униформы 40. И динамически изменяйте размер неравномерно (так, чтобы они могли растягиваться очень широко, но никогда не будут иметь размер ниже 40/40).
  • Сделайте так, чтобы они принуждали минимальную высоту, но растягивались до доступной ширины.
  • Сделайте так, чтобы они растягивались равномерно, соответствуя постоянной высоте панели стека.
  • Заставить стековую панель, чтобы заполнить динамическую высоту ее контейнера.

Спасибо.

1 Ответ

1 голос
/ 11 сентября 2011

В большинстве случаев вы, вероятно, захотите использовать UniformGrid с одним столбцом вместо StackPanel. Для форсирования размеров используйте Style, который устанавливает MinHeight и MinWidth. Если однородность гарантированно является «односторонней», вы можете просто связать Width с ActualHeight.

...