Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set Grid row and column positions programmatically

Tags:

wpf

gridview

I have two Grids inside a Stackpanel. The first grid is named as GridX. Initially, inside the grid, there is a 2D array of Textboxes(RowDefs/ColumnDefs). The TextBox definition in XAML is

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

I want to add a TextBlock programmatically in the same position as part of GridX.

The effect must be like this

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

How to add this. I have tried this:

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

But failed.

Again I tried this:

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;     

Now the problem is that TextBlock is not visible. TextBox hides it. I appreciate your help.

like image 701
Vinod Avatar asked Sep 19 '10 12:09

Vinod


1 Answers

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); 
like image 125
John Bowen Avatar answered Sep 22 '22 10:09

John Bowen