如何以编程方式将textBox添加到Grid中?

时间:2014-08-14 16:41:43

标签: c# wpf textbox grid-layout

我有一个WPF网格我想在运行时插入一些图像。

的MSDN

http://msdn.microsoft.com/en-us/library/system.windows.controls.grid%28v=vs.110%29.aspx

给出了这个例子,使用文本而不是图像,但我认为概念是相同的。 。 。

// Create the application's main window
mainWindow = new Window();
mainWindow.Title = "Grid Sample";

// Create the Grid
Grid myGrid = new Grid();
myGrid.Width = 250;
myGrid.Height = 100;
myGrid.HorizontalAlignment = HorizontalAlignment.Left;
myGrid.VerticalAlignment = VerticalAlignment.Top;
myGrid.ShowGridLines = true;

// Define the Columns
ColumnDefinition colDef1 = new ColumnDefinition();
ColumnDefinition colDef2 = new ColumnDefinition();
ColumnDefinition colDef3 = new ColumnDefinition();
myGrid.ColumnDefinitions.Add(colDef1);
myGrid.ColumnDefinitions.Add(colDef2);
myGrid.ColumnDefinitions.Add(colDef3);

// Define the Rows
RowDefinition rowDef1 = new RowDefinition();
RowDefinition rowDef2 = new RowDefinition();
RowDefinition rowDef3 = new RowDefinition();
RowDefinition rowDef4 = new RowDefinition();
myGrid.RowDefinitions.Add(rowDef1);
myGrid.RowDefinitions.Add(rowDef2);
myGrid.RowDefinitions.Add(rowDef3);
myGrid.RowDefinitions.Add(rowDef4);

// Add the first text cell to the Grid
TextBlock txt1 = new TextBlock();
txt1.Text = "2005 Products Shipped";
txt1.FontSize = 20; 
txt1.FontWeight = FontWeights.Bold;
Grid.SetColumnSpan(txt1, 3);
Grid.SetRow(txt1, 0);

网格绘制得很好但没有文字出现。我无论如何都不理解它,因为示例的Text部分没有引用" myGrid" - 它如何知道被引用的网格?我试过更换Grid"用" myGrid"但是编译器只是说" 无法使用实例引用访问;使用类型名称来限定"。

那么怎么做我在运行时将一个项插入任意Grid坐标?

2 个答案:

答案 0 :(得分:1)

唯一缺少这个例子的是

Grid.Children.Add(txt1);

在最后。基本上,您可以在控件上使用Grid.SetRowGrid.SetColumnGrid.SetRowSpanGrid.SetColumnSpan来设置它在网格中的位置以及它将占用多少个单元格,然后您只需Add将其Children添加到网格Grid即可实际显示。

因此,如果您想在运行时向{{1}}添加任意控件,只需使用这些函数即可设置。

答案 1 :(得分:1)

你错过了这个例子的关键路线:

myGrid.Children.Add(txt1);

实际上将文本块放入布局中(通过将其添加到网格中)。

您无法在函数调用中使用myGrid的原因是Grid.RowGrid.Column 附加属性您没有设置它们的方式你会想到(或者像你想象的那样在XAML中设置它们)。有关其工作原理的更多信息,请参阅MSDN(链接到SetColumn函数)。

" Grid"控件查看其子项的附加属性并相应地放置项目,因此在设置列/行时您不需要引用myGrid1

附加属性的MSDN:http://msdn.microsoft.com/en-us/library/ms749011(v=vs.110).aspx