2010-09-19 19 views
63

Ho due griglie all'interno di uno Stackpanel. La prima griglia è denominata GridX. Inizialmente all'interno della griglia c'è una matrice 2D di Textboxes (RowDefs/ColumnDefs). La definizione TextBox in XAML èCome impostare le posizioni della riga e della colonna della griglia a livello di programmazione

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

voglio aggiungere un TextBlock programamtically nella stessa posizione come parte di GridX.

effetto deve essere come questo

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

Come aggiungere questo. Ho provato questo:

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

Ma non è riuscito.

Ancora una volta ho provato questo:

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;  

Ora il problema è che non è TextBlock visible.TextBox nasconde. può aiutare

+0

Il codice è stato aggiornato.Ora il problema è la visibilità del blocco di testo – Vinod

risposta

122

Per proprietà associate è possibile chiamare SetValue sull'oggetto per il quale si desidera assegnare il valore:

tblock.SetValue(Grid.RowProperty, 4); 

Oppure chiamare il metodo Set statico (non come un metodo di istanza, come si è tentato) per la proprietà del tipo proprietario, in questo caso SetRow:

Grid.SetRow(tblock, 4); 
+0

SetRow ha funzionato mentre SetValue no: stava lasciando la riga così com'è (zero nel mio caso) –

17

Ecco un esempio che potrebbe aiutare qualcuno:

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