как я могу получить доступ к содержимому gridIndex - PullRequest
0 голосов
/ 04 августа 2011

В моей таблице много строк и столбцов.

Это выглядит так.

<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 или for для этого кода:

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

Я пробовал много способов.но я этого не делал .. многие люди говорят "использовать Grid.SetColumn и Grid.SetRow", но это не может быть применено ....

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 04 августа 2011

В соответствии с вашими требованиями это можно сделать следующим образом ...

Исходя из кода, вы можете добавить элементы управления RectImg в дочерние элементы сетки, а перед этим убедитесь, что вы назначили индексы Row и Column.

     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);
                 }
            }
     }

Но такая конструкция неэффективна.На самом деле это должен быть ItemsControl, содержащий несколько элементов управления RectImg.

вот так ....

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

Здесь "local" - это пространство имен XAML вашего локального пространства имен проекта, в котором находится MainWindow.

Ваше MainWindow должно быть таким, как показано ниже...

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

Дайте мне знать, если это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...