How to set Grid row and column positions programmatically How to set Grid row and column positions programmatically wpf wpf

How to set Grid row and column positions programmatically


For attached properties you can either call SetValue on the object for which you want to assign the value:

tblock.SetValue(Grid.RowProperty, 4);

Or call the static Set method (not as an instance method like you tried) for the property on the owner type, in this case SetRow:

Grid.SetRow(tblock, 4);


Here is an example which might help someone:

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


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