2010-09-19 127 views
63

我在一個Stackpanel內有兩個網格。 第一個網格被命名爲GridX。 最初在網格內有一個二維數組文本框(RowDefs/ColumnDefs)。 在XAML文本框的定義是如何以編程方式設置網格行和列位置

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

我想在同一個位置添加一個的TextBlock programamtically的是gridx一部分。

效果一定是這樣的

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

如何添加此。 我試過這個:

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

但是失敗了。

我又一次試圖這樣的:

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;  

現在的問題是,TextBlock的不visible.TextBox隱藏它。 你能幫

+0

代碼得到更新。現在的問題是文本塊的可見性 – Vinod 2010-09-19 12:39:16

回答

122

對於附加屬性,您可以調用的SetValue您要指派該值的對象:

tblock.SetValue(Grid.RowProperty, 4); 

或者調用靜態設置方法(而不是一個實例方法像你試過)對所有者類型,在這種情況下,物業SetRow:

Grid.SetRow(tblock, 4); 
+0

SetRow工作,而SetValue沒有:它正在離開行(在我的情況下爲零) – 2015-07-02 09:48:23

17

下面是一個例子可能幫助別人:

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); 
相關問題