2009-12-02 2 views
2

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

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

Давайте рассмотрим пример, я получил в настоящее время:

  • У меня есть сетка с фиксированным размером ячейки (который может быть изменен с 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 и полей, конечно).

ответ

3

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

EDIT: Извинения. Я пропустил важную часть вашего xaml ... Контейнер MyUserControl1 представляет собой StackPanel ... это будет складывать дочерние элементы управления и изменять размер в соответствии с ними; Если вы замените его на DockPanel (или сетку), дочерние элементы управления заполнит доступное пространство и даст вам результат после ...

Посмотрите на статью this msdn ... Надеюсь, что это поможет:)

+0

Вы правы. После прочтения статьи я понимаю, что мои проблемы часто связаны с StackPanel. Теперь я понимаю, когда использовать DockPanel. – adrianm

Смежные вопросы