2009-09-27 16 views
9

Czy istnieje sposób łączenia wierszy w określonej kolumnie? Stąd, aby uzyskać coś takiego (Obecnie używam rowspan na kontroli tj obrazu, ale jest jakiś lepszy sposób?)WPF: Jak łączyć wiersze w kolumnie (alternatywa dla rowspan)?

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

używam tego kodu zasadzie

<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> 

co daje mi coś takiego ten (zauważ wiersze pojawiają się również w kolumnie 0)

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

teraz mogę obejść ten problem na przykład jeśli chcę, aby umieścić obraz można używać rowspan, ale nie jest to możliwe, aby zaprojektować kolumnę w Bez wierszy i innych kolumn z rzędami?

Odpowiedz

11

Nie jest to możliwe z kontrolką Grid. Wiersze przechodzą przez wszystkie kolumny, a kolumny przechodzą przez wszystkie wiersze. Jak już zauważyłeś, RowSpan i ColumnSpan pozwalają na uzyskanie zakresu kontrolnego, odpowiednio, wielu wierszy lub kolumn.

Innym potencjalnym rozwiązaniem jest gospodarzem jednego Grid w innej:

<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

Dziękuję kent, ale przypuszczam, że dodatkowe nadpisanie kodu nie jest tego warte? .. Zakładam, że lepiej będzie kontynuować korzystanie z mojej siatki i po prostu użyć RowSpan itp.? –

+0

@ Mark: tak, sądząc po twoim opisie Powiedziałbym, że 'RowSpan' to najłatwiejszy sposób na osiągnięcie celu. –

1

Jak o coś takiego:

  <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

spróbuje użyć prostokąt scalić 6 rzędów.

<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> 
Powiązane problemy