0

我有一个 wpf 应用程序,我在其中使用 wpf 网格并向其动态添加/删除控件。添加控件很好,但在删除它们后,它们会从网格中消失,但会留下空白位置,我想被其余元素填充,就像它们在包装面板中所做的那样。

以前我使用的是换行面板,它工作正常,但我需要在我的组框之间添加拆分器控件,因此我用网格替换了换行面板。

这是窗口的屏幕截图

在此处输入图像描述

我删除了中间的组框,它显示如下

在此处输入图像描述

我希望第三个 groupbox 占据第二个 groupbox 的位置。作为记录,我使用了网格调整大小事件,这是它拥有的代码

 foreach (var control in this.DynamicGrid.Children)
        {
            if (control.GetType() == typeof(GroupBox))
            {
                GroupBox groupBox = control as GroupBox;
                groupBox.Height = this.DynamicGrid.ActualHeight;
                this.WrapPanel1.Width = this.DynamicGrid.ActualWidth;
            }
        }

Wrappanel 有动态网格,我们在其中添加/删除元素。

4

2 回答 2

0

我看不到您的问题...好像您在问“如何Grid在代码中使用控件?”。如果您想在运行时更改Grid.ColumnDefinitions(或任何其他Grid属性),那么为什么不这样做呢?如果您查看 MSDN 上的GridClass页面,您会看到一个长代码示例,其中准确地向您展示了如何操作Gridin 代码。例如,您可以执行以下操作:

ColumnDefinition rightHandColumn = new ColumnDefinition();
YourGrid.ColumnDefinitions.Add(rightHandColumn);
YourGrid.Children.Add(uiElementCurrentlyInGrid);
YourGrid.SetRow(uiElementCurrentlyInGrid, 0);
YourGrid.SetColumn(uiElementCurrentlyInGrid, 1);

然后删除一个项目:

Grid.Children.Remove(uiElementCurrentlyInGrid);
Grid.ColumnDefinitions.Remove(rightHandColumn);
于 2014-05-02T13:31:20.953 回答
0

你可以设置你的 <ColumnDefinition width="Auto" />

并用于 Visibility="Collapsed"隐藏列。

于 2014-05-02T13:20:29.173 回答