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

osc*_*tin 31 wpf grid row insert

网格行和列定义似乎是硬编码的,如下所示:

Grid.Row="3" Grid.Column="1"
Run Code Online (Sandbox Code Playgroud)

我正在开发一个新的WPF应用程序,我不得不不断添加和删除我的网格中的新行,因为客户端决定了表单的外观.我发现这是一项相当繁琐的工作.如果在顶部附近插入一行,我必须手动更改我刚插入的行下面的XAML中的所有行索引.

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

小智 43

在Visual Studio 2015中,您还可以将鼠标悬停在行的边缘上,并显示一个小的下拉框.当您单击向下箭头时,其中两个选项是"之前移动行"和"之后移动行".这是我发现的最好的方式.

示例图片:

截图

  • 这个答案很有传奇色彩,你不知道这是多少时间.谢谢! (4认同)
  • 这实际上就是答案.非常感谢 (3认同)
  • 这直接解决并解决了所述问题.这应该是公认的答案. (2认同)
  • 年。多年来,我一直被这个困扰。我正要写一个扩展来做到这一点。谢天谢地,我首先找到了这个答案。 (2认同)

Ric*_*key 5

A Grid是一个网格,并且出于特定原因对行和列进行编号。就像将一张方格纸切成一定数量的正方形一样。因为行和列的数量是固定的,所以您可以执行行和列跨接之类的强大功能。相反,对于可变数量的行或列,这是灵活的。

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

例如,您可以将所有变量行放入单个Grid行,现在网格行数不再更改。但是,您将需要一个支持可变数量的行的layout元素放入该Grid行。嗯,也有很多人选择从而是两个例如是有用的StackPanelDockPanel

DockPanel对于可变数量的行或列,布局元素尤其强大,尤其是当用作DockPanels内部DockPanels或其他组合时。您需要解决的所有问题就是细分并征服

这是对的介绍DockPanelWPF教程:Dock面板

  • 这并不能解决这里的实际问题-每当您想向网格中添加或删除行时都必须更新行索引,这非常烦人/乏味。即使在设计过程中只有几次,也仍然很乏味。PatFromCanada的评论是一个更好的答案-改用设计师。 (2认同)