2011-02-09 6 views
2


У меня возникла следующая проблема в дизайне моего XAML.Ширина полосы связующей сетки

Мне нужно прийти к концу, чтобы расположить мои данные как сетку, но с обычным DataTemplate. Поэтому я создаю верхний Grid, который содержит две заголовочные таблицы элементов данных. Ниже Grid Я построю StackPanel с ItemsControl, который включает в себя DataTemplate, который отображает мои данные. Все в порядке, когда я запускаю приложение, я получаю заголовки заголовков и элементы данных ниже, как сетка. Моя проблема заключается в том, что метки и содержимое элементов выравниваются неправильно. Поэтому я подумал о привязке Width столбцов заголовка заголовка к ActualWidthItemTemplate, но, к сожалению, это не сработает.

Есть ли какой-либо чистый способ достичь этого?
Заранее спасибо ...

ответ

5

Существует простой способ сделать это с помощью SharedSizeGroup в колонках сетки и assinging Grid.IsSharedSizeScope="True" для родителей.

например.

<StackPanel Grid.IsSharedSizeScope="True"> 
     <Grid Name="Headers"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition SharedSizeGroup="A"/> 
       <ColumnDefinition SharedSizeGroup="B"/> 
      </Grid.ColumnDefinitions> 
      <TextBlock Grid.Column="0" Text="Name"/> 
      <TextBlock Grid.Column="1" Text="Occupation"/> 
     </Grid> 
     <ItemsControl Name="Items" ItemsSource="{Binding Data}"> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition SharedSizeGroup="A"/> 
          <ColumnDefinition SharedSizeGroup="B"/> 
         </Grid.ColumnDefinitions> 
         <TextBlock Grid.Column="0" Text="{Binding Name}"/> 
         <TextBlock Grid.Column="1" Text="{Binding Occupation}"/> 
        </Grid> 
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl> 
    </StackPanel> 

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

+0

+1 - это один из тех неочевидных методов WPF, о которых каждый должен знать. –

+0

@Robert Rossney: Абсолютно, и это довольно элегантное решение общей проблемы. –

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