2009-09-27 10 views
9

Có cách nào để kết hợp các hàng trong một cột cụ thể không? Do đó để có được một cái gì đó như thế này (Tôi hiện đang sử dụng rowspan trên tức là kiểm soát hình ảnh nhưng lại có một cách tốt hơn?)WPF: Làm thế nào để kết hợp hàng trong một cột (thay thế cho rowspan)?

-------------------- 
    |   |--------| 
    |   |--------| 
    |   |--------| 
    |   |--------| 
    |   |--------| 
    -------------------- 

Tôi đang sử dụng mã này về cơ bản

<Grid.RowDefinitions> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="28" /> 
     <RowDefinition Height="28" /> 
     <RowDefinition Height="28" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="28" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="124" /> 
     <ColumnDefinition Width="246*" /> 
    </Grid.ColumnDefinitions> 

nào mang lại cho tôi một cái gì đó như này (chú ý các hàng cũng xuất hiện trong cột 0)

-------------------- 
    |---------|--------| 
    |---------|--------| 
    |---------|--------| 
    |---------|--------| 
    |---------|--------| 
    -------------------- 

Bây giờ tôi có thể làm được việc này ví dụ nếu tôi muốn đặt một hình ảnh tôi có thể sử dụng rowspan, nhưng nó không thể thiết kế một cột w ith không có hàng và các cột khác có hàng?

Trả lời

11

Điều này là không thể với điều khiển Grid. Hàng đi qua tất cả các cột và các cột đi qua tất cả các hàng. Như bạn đã tìm thấy, các số RowSpanColumnSpan cho phép bạn có một khoảng kiểm soát nhiều hàng hoặc cột tương ứng.

Một workaround tiềm năng khác là để lưu trữ một Grid trong vòng một:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 

    <Image/> 

    <Grid Grid.Column="1"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
    </Grid> 
</Grid> 
+0

Cảm ơn bạn, nhưng tôi cho rằng mã bổ sung không đáng giá? .. Tôi đoán nó tốt hơn để tiếp tục sử dụng lưới của tôi và chỉ sử dụng RowSpan vv? –

+0

@Mark: vâng, xét theo mô tả của bạn, tôi sẽ nói 'RowSpan' là cách dễ nhất để đạt được mục tiêu của bạn. –

1

Làm thế nào về một cái gì đó như thế này:

  <StackPanel Orientation="Horizontal"> 
       <Grid Height="100" Width="50"></Grid> 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="*" /> 
         <RowDefinition Height="*" /> 
         <RowDefinition Height="*" /> 
         <RowDefinition Height="*" /> 
         <RowDefinition Height="*" /> 
        </Grid.RowDefinitions> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="150" /> 
        </Grid.ColumnDefinitions> 
       </Grid> 
      </StackPanel> 
0

cố gắng sử dụng hình chữ nhật để hợp nhất 6 hàng.

<Grid> 
<Grid.RowDefinitions> 
    <RowDefinition Height="*" /> 
    <RowDefinition Height="28" /> 
    <RowDefinition Height="28" /> 
    <RowDefinition Height="28" /> 
    <RowDefinition Height="*" /> 
    <RowDefinition Height="28" /> 
</Grid.RowDefinitions> 
<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="124" /> 
    <ColumnDefinition Width="246*" /> 
</Grid.ColumnDefinitions> 
<Rectangle Grid.RowSpan="6"/> 
</Grid>