Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF网格:如果需要插入新行,是否有一种简单的方法来重新调整行项目?_Wpf_Insert_Grid_Row - Fatal编程技术网

WPF网格:如果需要插入新行,是否有一种简单的方法来重新调整行项目?

WPF网格:如果需要插入新行,是否有一种简单的方法来重新调整行项目?,wpf,insert,grid,row,Wpf,Insert,Grid,Row,网格行和列定义的硬编码如下: Grid.Row="3" Grid.Column="1" 我正在开发一个新的WPF应用程序,并且我必须不断地从我的网格中添加和删除新的行,因为客户决定了表单应该如何看起来。我发现这是一项相当乏味的任务。如果在顶部附近插入一行,我必须手动更改刚刚插入的行下方XAML中的所有行索引 是否有一种简单的方法可以自动调整所有行?网格是一个网格,行和列的编号是出于特定的原因。这就像一张被切成固定数量正方形的图表纸。因为行和列的数量是固定的,所以您可以做一些强大的事情,比如行和

网格行和列定义的硬编码如下:

Grid.Row="3" Grid.Column="1"
我正在开发一个新的WPF应用程序,并且我必须不断地从我的网格中添加和删除新的行,因为客户决定了表单应该如何看起来。我发现这是一项相当乏味的任务。如果在顶部附近插入一行,我必须手动更改刚刚插入的行下方XAML中的所有行索引

是否有一种简单的方法可以自动调整所有行?

网格是一个网格,行和列的编号是出于特定的原因。这就像一张被切成固定数量正方形的图表纸。因为行和列的数量是固定的,所以您可以做一些强大的事情,比如行和列的扩展。相反,这对于可变行数或列数来说是不灵活的

如果您需要可变数量的行,或者在设计时不断添加行,则可能是
网格
不是最适合您的设计元素。或者更好的是,您可以将
网格
与另一个布局元素结合使用,以获得所需的灵活性

例如,您可以将所有变量行放入一个
网格
行,现在您的网格行计数不再更改。但是,您将需要一个布局元素,该元素支持将可变数量的行放入该
网格
行中。嗯,有很多可供选择,但有两个很有用,例如
StackPanel
DockPanel

布局元素
DockPanel
特别适用于不同数量的行或列,尤其是在
DockPanel
或其他组合中用作
DockPanel
时。处理这个布局问题所需的一切就是细分和征服


这里介绍了
DockPanel

没有简单的方法可以自动调整网格的行/列

我过去使用过的一个潜在替代方法是
UniformGrid
,因为它不需要在每个项目中都使用行/列引用。它很适合为数据屏蔽占位符


如果您正在进行初始设计,我建议您只使用VisualStudio中的拖放界面或类似或的设计工具。Balsamiq是我的最爱,因为它故意看起来不像一个实际的应用程序,所以客户端不会被事物的实际外观所困扰,而是专注于数据。

我知道这是一个非常古老的问题,但万一有人在Visual Studio 2013中遇到它(我也不确定可能更早)您只需将鼠标悬停在网格的边缘上,即可将一行拆分为两行

它将使行具有设置的数字高度,因此您可能需要返回并更改为“自动”或“*”或任何您想要使用的值。它还使原始行中的任何内容跨越两行,因此您需要删除这些项目的RowSpan=“2”属性并将其放入正确的行中,但它会自动向下推低较低行中的所有项目


它不是全自动的,并且有一点清理,但是如果你有很多行,它比手动重新编号要快。

在Visual Studio 2015中,你也可以将鼠标悬停在行的边缘,会出现一个小下拉框。单击向下箭头时,其中两个选项是“在之前移动行”和“在之后移动行”。这是我找到的最好的方法

示例图像:


我刚刚谈到这一点,你的stackpanel想法非常有效。我设置了一个垂直方向的stackpanel作为我的桌子。然后,我在每一行中使用一系列水平堆栈面板作为行,每个行都有两个控件、一个标签和一个文本框。为了确保标签的宽度都相同,我创建了一个样式来设置标签的宽度属性。现在移动一排排是轻而易举的事!这并不能解决实际问题——每当您要向网格中添加或删除行时,必须更新行索引是非常烦人/乏味的。即使只是设计过程中的几次,它仍然是乏味的。PatFromCanada的评论是一个更好的答案-使用设计器。如果使用设计器添加或删除行/列,它将为您调整所有内容。在需要新行的位置单击鼠标右键,选择“行”,然后插入。这是为数不多的几件设计师能轻松做好的事情之一。太棒了!如果你能在答案中加入一个截图,我将不胜感激。这个答案是传奇式的,你不知道这是多么省时。非常感谢。这直接解决了上述问题。这应该是公认的答案。多年来,我一直被这个困扰着。我正要写一个扩展来实现它。谢天谢地,我首先找到了这个答案。非常棒的答案。谢谢你节省了很多人的时间。一个实时的节省。