Вопрос

Может ли кто-нибудь помочь мне понять выравнивание растяжения WPF.Я часто сталкиваюсь с проблемами, когда мне нужно, чтобы элемент управления заполнил область, но я никогда не понимаю, на каком уровне мне следует поместить UpperAlignment="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 и полей).

Это было полезно?

Решение

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

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

Посмотри на этот статья в MSDN...Надеюсь это поможет :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top