Растяжка выравнивания WPF - PullRequest
       8

Растяжка выравнивания WPF

2 голосов
/ 02 декабря 2009

Может кто-нибудь помочь мне понять растягивание WPF.Я часто сталкиваюсь с проблемами, когда я хочу, чтобы элемент управления заполнил область, но я никогда не понимаю, на каком уровне я должен поместить VerticalAlignment = "Stretch".Особенно, когда задействованы UserControls.

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

Давайте возьмем пример, который яполучил сейчас:

  • У меня есть сетка с ячейкой фиксированного размера (которая может быть изменена с помощью GridSplitter)
  • В этой ячейке у меня есть UserControl, содержащий StackPanel с TabControl
  • В TabControl у меня есть TabItems, содержащие другой UserControl с ListView

Или в каком-то псевдо-XAML

<ns:MyUserControl1 Grid.Row="0" Grid.Column="0">
    <!-- this is in MyUserControl1 -->
    <StackPanel>
        <TabControl>
            <TabItem>
               <ns:MyUserControl2>
                    <!-- This is in MyUserControl2 -->
                    <ListView/>
               </ns:MyUserControl2>
            </TabItem>
        </TabControl>
    </StackPanel>
</ns:MyUserControl>

Теперь я хочу, чтобы ListView заполнилвся ячейка сетки (за исключением, конечно, TabControl и полей).

1 Ответ

3 голосов
/ 02 декабря 2009

Ваш ListView заполнит ваш MyUserControl2 - если вы хотите, чтобы это помещалось во всей вкладке, вам необходимо убедиться, что вы удалили ограничения Высота и Ширина в файле xaml UserControl (по умолчанию они равны 300)

РЕДАКТИРОВАТЬ: Извинения - я пропустил важную часть вашего xaml ... Контейнер MyUserControl1 является StackPanel ... он будет складывать дочерние элементы управления и изменять их размер в соответствии с ними; Если вы замените его на DockPanel (или Grid), дочерние элементы управления заполнят доступное пространство и дадут вам результат, который вы после ...

Взгляните на эту статью MSDN ... Надеюсь, это поможет:)

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