web-dev-qa-db-fra.com

Comment définir par programme les positions des lignes et des colonnes de la grille

J'ai deux grilles à l'intérieur d'un Stackpanel . La première grille s'appelle GridX . Initialement, elle contient un tableau 2D de zones de texte (RowDefs/ColumnDefs) .

<TextBox x:Name="A1" Grid.Row="4" Grid.Column="5" TextAlignment="Center" />

Je veux ajouter un TextBlock programamtically dans la même position en tant que partie de GridX.

L'effet doit être comme ça

<TextBlock Grid.Row="4" Grid.Column="5"
    HorizontalAlignment="Left" VerticalAlignment="Top" Text="10" FontSize="8"/>

Comment ajouter ceci . J'ai essayé ceci:

TextBlock tblock = new TextBlock();
GridX.SetColumn(tblock, cIndex);
GridX.SetRow(tblock, rIndex);

Mais a échoué.

Encore une fois j'ai essayé ceci:

int rIndex = Grid.GetRow(txtBox);
int cIndex = Grid.GetColumn(txtBox);                               

                            TextBlock tblock = new TextBlock();
                            tblock.VerticalAlignment = VerticalAlignment.Top;
                            tblock.HorizontalAlignment = HorizontalAlignment.Left;
                            tblock.FontSize = 8;
                            tblock.Text = rc[i, j - 1];

                            Grid.SetColumn(tblock, cIndex);
                            Grid.SetRow(tblock, rIndex);


                            txtBox.MaxLength = 1;    

Maintenant, le problème est que TextBlock n'est pas visible.TextBox le cache . Pouvez-vous aider 

75
Vinod

Pour les propriétés attachées, vous pouvez appeler SetValue sur l'objet pour lequel vous souhaitez affecter la valeur:

tblock.SetValue(Grid.RowProperty, 4);

Ou appelez la méthode Set statique (pas comme une méthode d'instance comme vous l'avez essayé) pour la propriété sur le type de propriétaire, dans ce cas SetRow:

Grid.SetRow(tblock, 4);
133
John Bowen

Voici un exemple qui pourrait aider quelqu'un:

Grid test = new Grid();
test.ColumnDefinitions.Add(new ColumnDefinition());
test.ColumnDefinitions.Add(new ColumnDefinition());
test.RowDefinitions.Add(new RowDefinition());
test.RowDefinitions.Add(new RowDefinition());
test.RowDefinitions.Add(new RowDefinition());

Label t1 = new Label();
t1.Content = "Test1";
Label t2 = new Label();
t2.Content = "Test2";
Label t3 = new Label();
t3.Content = "Test3";
Label t4 = new Label();
t4.Content = "Test4";
Label t5 = new Label();
t5.Content = "Test5";
Label t6 = new Label();
t6.Content = "Test6";

Grid.SetColumn(t1, 0);
Grid.SetRow(t1, 0);
test.Children.Add(t1);

Grid.SetColumn(t2, 1);
Grid.SetRow(t2, 0);
test.Children.Add(t2);

Grid.SetColumn(t3, 0);
Grid.SetRow(t3, 1);
test.Children.Add(t3);

Grid.SetColumn(t4, 1);
Grid.SetRow(t4, 1);
test.Children.Add(t4);

Grid.SetColumn(t5, 0);
Grid.SetRow(t5, 2);
test.Children.Add(t5);

Grid.SetColumn(t6, 1);
Grid.SetRow(t6, 2);
test.Children.Add(t6);
24
Dave
for (int i = 0; i < 6; i++)
{
    test.ColumnDefinitions.Add(new ColumnDefinition());

    Label t1 = new Label();
    t1.Content = "Test" + i;

    Grid.SetColumn(t1, i);
    Grid.SetRow(t1, 0);
    test.Children.Add(t1);
}
0
KobCoder