在 WPF 中的许多控件中更改 Grid.Row 和 Grid.Column 的简单方法

Posted

技术标签:

【中文标题】在 WPF 中的许多控件中更改 Grid.Row 和 Grid.Column 的简单方法【英文标题】:Easy way to change Grid.Row and Grid.Column in many controls in WPF 【发布时间】:2011-10-27 06:03:59 【问题描述】:

我已经遇到过 1000 次这种情况: 我有 2 列和多行的网格。大多数情况下,我在第一列中有 TextBlock,在第二列中有 TextBox,但并非总是如此。现在,当我有 50 行并且我决定将第 49 行移动到网格中的第一行并且我不想交换行时,我想将它插入到第一位。然后我需要更改所有其余控件的 Grid.Row 和 Grid.Column 的值。这让我快疯了。我怎样才能使这更容易?

【问题讨论】:

这是一种运行时行为,还是您的意思是您在开发时在 XAML 中所做的事情? 为什么你不交换 Grid.Row="0" Grid.Row="49" 的值? 【参考方案1】:

如果您需要插入一个新行,那么您可以使用类似我在this question 一开始就概述的标记扩展名。

【讨论】:

【参考方案2】:

如果你的 xaml 代码格式化好了,你可以按住 Alt 键在每一行中选择并剪切 Grid.Row="x" 并按住 Alt 键选择并向下粘贴一行。

例如。

<TextBlock Grid.Row="0" Text="a"/>
<TextBlock Grid.Row="1" Text="b"/>
<TextBlock Grid.Row="2" Text="c"/>
<TextBlock Grid.Row="3" Text="d"/>

您想将&lt;TextBlock Grid.Row="3" Text="d"/&gt; 移到顶部。只需按住“Alt”键即可选择并复制:

Grid.Row="1"
Grid.Row="2"
Grid.Row="3"

再次使用 Alt 键粘贴它们以替换原来的

Grid.Row="0"
Grid.Row="1"
Grid.Row="2"

所以你会得到

<TextBlock Grid.Row="1" Text="a"/>
<TextBlock Grid.Row="2" Text="b"/>
<TextBlock Grid.Row="3" Text="c"/>
<TextBlock Grid.Row="3" Text="e"/>

然后只需将&lt;TextBlock Grid.Row="3" Text="d"/&gt; 移到顶部并将其Grid.Row 更改为0

【讨论】:

有点过于依赖格式,也取决于你如何排序,例如按行或按列。 @H.B.同意,如果 OP 说 I have this situation 1000 times already 我认为是时候调整易于修改的格式了。【参考方案3】:

听起来你最好使用ListBoxListView

【讨论】:

其实应该是ItemsControl,因为显然不需要选择。 @H.B.是的,你是对的,但我正在努力寻找一个简单的链接示例。

以上是关于在 WPF 中的许多控件中更改 Grid.Row 和 Grid.Column 的简单方法的主要内容,如果未能解决你的问题,请参考以下文章

在 WPF 中动态更改网格的可见性

WPF中的文本框绑定更新[重复]

WPF整理-为控件添加自定义附加属性

WPF,mvvm,在combobox中嵌套了checkbox控件,数据绑定完成后,无法实现双向绑定

如何在 WPF 中隐藏组合框的项目

WPF中怎么使用DataGridView