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

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

【问题讨论】:

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

标签: wpf grid


【解决方案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.是的,你是对的,但我正在努力寻找一个简单的链接示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    相关资源
    最近更新 更多