在 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"/>
您想将<TextBlock Grid.Row="3" Text="d"/>
移到顶部。只需按住“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"/>
然后只需将<TextBlock Grid.Row="3" Text="d"/>
移到顶部并将其Grid.Row
更改为0
【讨论】:
有点过于依赖格式,也取决于你如何排序,例如按行或按列。 @H.B.同意,如果 OP 说I have this situation 1000 times already
我认为是时候调整易于修改的格式了。【参考方案3】:
听起来你最好使用ListBox
或ListView
。
【讨论】:
其实应该是ItemsControl
,因为显然不需要选择。
@H.B.是的,你是对的,但我正在努力寻找一个简单的链接示例。以上是关于在 WPF 中的许多控件中更改 Grid.Row 和 Grid.Column 的简单方法的主要内容,如果未能解决你的问题,请参考以下文章