2016-11-24 1 views
0

Ich habe begonnen, eine neue Anwendung in WPF C# zu entwickeln. Das Problem, das ich habe, betrifft Rasterspalten-Definitionen.C# -WPF-Rasterspalten falsch interpretiert

Ich habe mein Fenster in separate Abschnitte unter Verwendung der Zeilen- und Spaltendefinitionen von Grids aufgeteilt (siehe Code unten).

Ich habe zwei Zeilen. Die erste ist derzeit leer, die zweite enthält ein neues Gitter, das weiter in Spalten unterteilt ist. Alle Gitter sind innerhalb einer Grenze.

Das seltsame Verhalten Ich erhalte, ist dieser Abschnitt des Codes:

<Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="1"> 
       <Grid> 

       </Grid> 
      </Border> 
      <Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="2"> 
       <Grid> 

       </Grid> 
      </Border> 
      <Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="3"> 
       <Grid> 

       </Grid> 
      </Border> 

Das Problem ist, dass die erste „subgrid“ entspricht tatsächlich der zweiten Spalte, der zweiten und dritten beide beziehen sich auf die dritte Spalte. Mit anderen Worten, wenn ich irgendeine Art von Kontrolle in das zweite Untergitter (das mit Grid.Column = "2"), wird das Steuerelement in der dritten Spalte aus irgendeinem Grund erscheinen.

Ich habe damit herumgespielt, und kann nicht verstehen, das Verhalten, das ich bekomme.

Ein anderes Beispiel: Ich habe eine Kontrolle in der zweiten Spalte wie folgt ausgedrückt:

<Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="2"> 
        <Grid> 
         <TextBox Width="100" Height="50"></TextBox> 
        </Grid> 
       </Border> 

Das Bild unten, was bedeutet ich habe: enter image description here

Whole XAML-Code:

<Border BorderThickness="1" BorderBrush="#ffcd22" Margin="10,10,10,10"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="100" /> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 
     <Border BorderThickness="1" BorderBrush="#ffcd22" Margin="-1,-1,-1,-1" Grid.Row="2"> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="200" /> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="200" /> 
       </Grid.ColumnDefinitions> 
       <Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="1"> 
        <Grid> 

        </Grid> 
       </Border> 
       <Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="2"> 
        <Grid> 

        </Grid> 
       </Border> 
       <Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="3"> 
        <Grid> 

        </Grid> 
       </Border> 
      </Grid> 
     </Border> 
    </Grid> 
+0

3 ColumnDefinitions haben Indizes 0,1,2, nicht 1,2,3 ... – ASh

Antwort

2

Das Problem ist, dass die Nummerierung der Spalte von 0 beginnt. Sie sollten Sie ändern R-Code wie folgt:

<Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="0"> 
    <Grid> 

    </Grid> 
</Border> 
<Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="1"> 
    <Grid> 

    </Grid> 
</Border> 
<Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="2"> 
    <Grid> 

    </Grid> 
</Border> 
+0

Whoah. Ich war so vertieft in das Problem, dass ich solch eine offensichtliche Sache übersehen hatte. Tausend Dank! –