2011-01-05 11 views
8

Tôi nghĩ rằng trong trường hợp này Một bức tranh trị giá một ngàn chữ:Làm cách nào để căn chỉnh các Lưới riêng biệt được tạo thông qua các mẫu dọc theo các cột/hàng của chúng?

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 - Tôi không muốn thiết lập một cụ thể với tới cột đầu tiên , nhưng để cho nó tối đa với nó cần.

Cập nhật: tôi đã cố gắng liên kết Coline và thực hiện điều này:

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

nhưng nó không làm việc cho tôi.

Trả lời

11

Bạn cần sử dụng SharedSizeGroup cho mỗi cột.

Kiểm tra hướng dẫn này ...

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

Ngoài ra, đảm bảo rằng các chia sẻ tài sản phạm vi kích thước là đúng đối với mạng lưới của bạn:

<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

Cảm ơn, tôi đã thử một số cách để sử dụng SharedSizeGroup và vẫn không thể giải quyết được vấn đề. Một trong số đó là những gì u c trong khu vực cập nhật. – Erez

+0

Cũng thay đổi trường hợp đầu tiên của lưới chứa của bạn để có thuộc tính . Sau đó, nó hoạt động tốt :) – Tom

+0

Cảm ơn Tom ... IsSharedSizeScope được đề cập trong hướng dẫn đó, nhưng không được hiển thị trong các ví dụ. Tôi đã cập nhật anh ta trả lời – ColinE

1

Thay vì sử dụng lưới điện như thế nào về việc sử dụng 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

Cảm ơn Tim, Vì dữ liệu của tôi chỉ dành cho đọc, có vẻ như tôi không được điều chỉnh để sử dụng DataGrid – Erez

Các vấn đề liên quan