我有一个 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.Row
和 Grid.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/