2011-01-05 54 views
8

我認爲,在這種情況下,一張圖片勝過千言萬語:如何對齊通過模板沿列/行創建的單獨網格?

alt text

XAML:

<Grid> 
    <ItemsControl ItemsSource="{Binding Persons}"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="Auto"/> 
         <ColumnDefinition/> 
        </Grid.ColumnDefinitions> 
        <TextBlock Text="{Binding Name}" Background="LightBlue"/> 
        <TextBlock Text="{Binding Age}" Background="LightPink" Grid.Column="1"/> 
       </Grid> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
</Grid> 

PS - 我不想設定一個特定的與第一列,但要給它最大的需求。

更新: 我試過可啉的鏈接,並做到了這一點:

<Grid.ColumnDefinitions> 
         <ColumnDefinition SharedSizeGroup="A" Width="Auto"/> 
         <ColumnDefinition /> 
        </Grid.ColumnDefinitions> 

但它並沒有爲我工作。

回答

11

您需要爲每列使用SharedSizeGroup。

退房本教程...

http://blogs.interknowlogy.com/johnbowen/archive/2007/08/27/21132.aspx

此外,確保共享的大小範圍屬性是網格真:

<Grid Grid.IsSharedSizeScope="True"> 
    <ItemsControl ItemsSource="{Binding Persons}"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="Auto" SharedSizeGroup="A"/> 
         <ColumnDefinition/> 
        </Grid.ColumnDefinitions> 
        <TextBlock Text="{Binding Name}" Background="LightBlue"/> 
        <TextBlock Text="{Binding Age}" Background="LightPink" Grid.Column="1"/> 
       </Grid> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
</Grid> 
+0

謝謝,我試過在某些方面使用SharedSizeGroup,但仍然無法解決問題。其中之一就是更新區域的內容。 – Erez 2011-01-05 14:19:23

+0

還要將您的容器網格的第一個實例更改爲具有屬性。然後它工作得很好:) – Tom 2011-01-05 14:28:17

+0

謝謝湯姆... IsSharedSizeScope在該教程中提到,但未在示例中顯示。我已更新他回答 – ColinE 2011-01-05 14:39:41

1

而不是使用電網有關使用DataGrid中如何?

<Grid> 

    <DataGrid ItemsSource="{Binding}" 
      AutoGenerateColumns="False" 
      IsReadOnly="True" 
      CanUserAddRows="False" 
      ColumnHeaderHeight="0" 
      GridLinesVisibility="None"> 

     <DataGrid.Resources> 

      <Style TargetType="DataGridCell" x:Key="NameStyle"> 
       <Setter Property="Background" Value="LightBlue"/> 
       <Setter Property="BorderBrush" Value="LightBlue"/> 
      </Style> 

      <Style TargetType="DataGridCell" x:Key="AgeStyle"> 
       <Setter Property="Background" Value="LightPink"/> 
       <Setter Property="BorderBrush" Value="LightPink"/> 
      </Style> 

     </DataGrid.Resources> 

     <DataGrid.Columns> 

      <DataGridTextColumn Binding="{Binding Name}" 
           CellStyle="{StaticResource ResourceKey=NameStyle}"/> 

      <DataGridTextColumn Binding="{Binding Age}" 
           CellStyle="{StaticResource ResourceKey=AgeStyle}"/> 

     </DataGrid.Columns> 

    </DataGrid> 

</Grid> 
+0

感謝蒂姆,因爲我的數據是隻讀的在我看來,使用DataGrid是不合理的 – Erez 2011-01-05 15:27:40