c# - 如何以编程方式将文本框添加到网格中?

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

网格绘制得很好,但没有出现任何文本。无论如何我不明白它,因为示例的文本部分没有引用“myGrid” - 它如何知道正在引用哪个网格?我尝试用“myGrid”替换“Grid”,但编译器只是说“无法通过实例引用访问;改为使用类型名称来限定它”。

那么如何在运行时将项目插入到任意网格坐标中呢?

最佳答案

您错过了该示例中的关键行:

myGrid.Children.Add(txt1);

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

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

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

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

关于c# - 如何以编程方式将文本框添加到网格中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25313282/

相关文章:

c# - 如何将 passwordchar 属性设置为 asp.net 文本框?

c# - Silverlight 还是 WPF?

wpf - 如何在 BlendDesigner 中将 UserControl 添加到窗口?

jquery - 如何在文本框中使用 Enter 键来触发功能而不是第一个/默认按钮

c# - 如何将两个文本框值(数据)添加到数据库(My sql)的单个列中?

c# - 了解 C# 中的代理模式

c# - 使用 wsHttpBinding 和 Message Security 使用客户端凭据类型窗口对 WCF 进行负载平衡

asp.net - 具有默认值的文本框

wpf - 如何使用单选按钮 "IsChecked"属性控制文本框的可见性?

c# - Wpf\MVVM - 我应该在哪里放置 View 相关属性?