我的 WPF“窗口”中有以下网格(是的类窗口);
<Grid Name="RequiredGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="70" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
</Grid>
根据传递到窗口中的内容,我想一次一行地将项目添加到此网格中。也就是说,我想在左列中添加一个标签,在右列中添加一个文本框。我相信我知道如何通过在后面的代码中执行以下操作来添加新行来保存新数据:
RequiredGrid.RowDefinitions.Add(new RowDefinition());
问题是,在我创建标签和文本框之后。
Label AttrLabel = new Label();
TextBox AttrTextBox = new TextBox();
我真的不知道如何将它放入窗口中以便显示。我见过一些帖子说,做这样的事情:
this.Controls.Add(AttrLabel);
this.Controls.Add(AttrTextBox);
这有两个问题。 1)我的Window类没有这个“Controls”属性或其他属性。 2) 这不会帮助我指定每个 UI 项目的行和列。
现在,在 XAML 中,我可以轻松地使用如下所示的内容指定行和列:
<Label Grid.Column="0" Grid.Row="0"/>
但这违背了我的意图的“动态性”。有谁知道如何让动态创建的 UI 元素显示在我的窗口中,并指定它将显示在网格中的行和列。
最佳答案
Grid.Row 和 Grid.Column 属性为 Attached Properties ,因此不像普通的 .net 属性那样设置。从代码中设置它们的正确方法是:
Grid.SetRow(someLabel, 0);
Grid.SetColumn(someLabel, 0);
您应该能够在将它们添加到 Grid 对象的 Children 集合之前或之后执行此操作,但在添加控件之前设置它们应该可以防止任何可能的闪烁。
关于wpf - 如何在运行时将 wpf 控件添加到特定的网格行和单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7127125/