2011-08-04 14 views
0

My Gridには多くの行と列があります。gridIndexのコンテンツにはどのようにアクセスできますか

このようになります。

<Grid x:Name="grid" Grid.ColumnSpan="3" RenderTransformOrigin="0.5,0.5"> 
     <Grid.RenderTransform> 
      <TransformGroup> 
       <ScaleTransform/> 
       <SkewTransform/> 
       <RotateTransform/> 
       <TranslateTransform/> 
      </TransformGroup> 
     </Grid.RenderTransform> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="1*" /> 
      <RowDefinition Height="1*" /> 
      <RowDefinition Height="1*" /> 
      <RowDefinition Height="1*" /> 
      <RowDefinition Height="1*" /> 
      <RowDefinition Height="1*" /> 
      <RowDefinition Height="1*" /> 
      <RowDefinition Height="1*" /> 
     </Grid.RowDefinitions> 

     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
     </Grid.ColumnDefinitions> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="0"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="1"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="2"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="3"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="4"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="5"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="6"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="7"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="8"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="9"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="9"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="9"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="9"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="10"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="11"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="12"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="13"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="14"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="0" Grid.Column="15"></rectImg:RectImg> 


     <rectImg:RectImg Grid.Row="1" Grid.Column="0"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="2" Grid.Column="0"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="3" Grid.Column="0"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="4" Grid.Column="0"></rectImg:RectImg> 
     <rectImg:RectImg Grid.Row="5" Grid.Column="0"></rectImg:RectImg> 

    </Grid> 

私は背後にあるコードで初期化しますforeachを使用するか、このコードのためにしたい:

<rectImg:RectImg Grid.Row="0" Grid.Column="0"></rectImg:RectImg> 

私は多くの方法を試してみました。しかし、私はそれをしません..多くの人々は、 "Grid.SetColumnとGrid.SetRowを使用する"と言うが、適用することはできません....

どうすればこの問題を解決できますか?

答えて

0

する要件のためにこれを使用すると、グリッドの子供たちにRectImgコントロールを追加し、その前に、行と列のインデックスを割り当てることを確認することができます後ろのコードから...

を以下のように行うことができます。

 private void AddRectImgControls() 
    { 
      var rectImg = new RectImg(); 
      for(var i = 0; i++; i < this.grid.RowDefinitions.Count) 
      { 
       for(var j = 0; j++; j < this.grid.ColumnDefinitions.Count) 
       { 
        var rectImg = new RectImg(); 
        Grid.SetRow(rectImg, i); 
        Grid.SetColumn(rectImg, j); 
        this.grid.Children.Add(rectImg); 
       } 
      } 
    } 

しかし、このような設計は効率的ではありません。実際には、複数のRectImgコントロールをホストしているItemsControlでなければなりません。このような

....ここ

<ItemsControl ItemsSource="{x:Static local:MainWindow.UniformGridCollection}"> 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
        <UniformGrid Rows="8" Columns="23" /> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <rectImg:RectImg/>  
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

「ローカル」は、あなたのXAML名前空間メインウィンドウが存在するローカルプロジェクトの名前空間です。あなたのメインウィンドウは、以下のようにする必要があります

...

public partial class MainWindow : Window 
    { 
     //// .... rest of the MainWindow code. 

     public static List<object> UniformGridCollection 
     { 
      get 
      { 
       var coll = new List<object>(); 
       for(i = 0; i < 8 * 23; i++) //// 8 and 23 are UniformGrid's row and column size. 
       { 
        coll.Add(new object()); 
       } 
       return coll; 
      } 
     } 
    } 

は、このことができますなら、私に教えてください。

+0

それが動作します!ありがとうございました!!!!!!!! –

+0

うれしい私は助けることができます。 –

関連する問題