2016-11-24 15 views
0

私はWPF C#で新しいアプリケーションを開発し始めました。私が持っている問題は、グリッド列の定義に関するものです。C#WPFグリッドの列が正しく解釈されない

グリッドの行と列の定義(下記のコードを参照)を使用して、私のウィンドウを別々のセクションに分割しました。

私は2つの行を持っています。最初は現在空です。もう1つは新しいグリッドを含み、それはさらに列に分割されます。 すべてのグリッドが境界内にあります。

私は取得しています奇妙な行動は、このコードのセクションです:

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

問題は、最初の「サブグリッド」は、実際に 第二カラム第2、第3に対応していること、ですどちらも第3列を参照してください。 つまり、Grid.Column = "2"の2番目のサブグリッドに何らかのコントロールを置くたびに、何らかの理由でコントロールが第3列に表示されます。

私はそれを耳にしていて、私が得ている動作を理解できないようです。

もう一つの例:私は次のように、第2の列にコントロールを配置しました:

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

下の画像は、私が得たものを表す: enter image description here

全体XAMLコード:

<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はインデックス1,2,1,2,3 ... – ASh

答えて

2

問題は、列の数値が0から始まることです。変更する必要がありますrのコードはこのようになります:

<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

を持っています。私はそのような明らかなことを見過ごしてしまったので、この問題に深く関わっていました。ありがとう! –

関連する問題