美文网首页
Grid下的动态删除(隐藏)

Grid下的动态删除(隐藏)

作者: 桜花落舞 | 来源:发表于2018-10-15 12:25 被阅读0次

假设我们存在如下布局:

<Grid x:Name="Grid" ShowGridLines="True">
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>

        <TextBlock x:Name="One"
                   Grid.Row="0"
                   Text="1" />
        <TextBlock x:Name="Two"
                   Grid.Row="1"
                   Text="2" />
        <TextBlock x:Name="Three" 
                   Grid.Row="2"
                   Text="3" />
        <TextBlock x:Name="Four" 
                   Grid.Row="3"
                   Text="4" />
        <TextBlock x:Name="Five"
                   Grid.Row="4"
                   Text="5" />
    </Grid>

它的显示非常的简单,是这样子的:

原始布局
现在我们需要删除中间的元素,假设删除2
Grid.Children.Remove(Two);
然而,很不幸的是,它现在是这个样子:
删除之后的布局
留下的控件疯狂暗示,这个行要删除啦。于是我们尝试将行进行删除~
int.TryParse(Two.GetValue(Grid.RowProperty).ToString(), out var result);
var row =  Grid.RowDefinitions[result];
Grid.RowDefinitions.Remove(row);

你认为这样就OK了,它又坑了一把


再删除的布局

这样的做法,仅仅把最后一行删除了,5都移动到4这个位置了。
现在需要重新指定一下各个元素位置

var row = 0;
foreach (var borderGridChild in Grid.Children)
{
  (borderGridChild as UIElement)?.SetValue(Grid.RowProperty, row++);
}

然后再来一次吧~


最终结果

相关文章

网友评论

      本文标题:Grid下的动态删除(隐藏)

      本文链接:https://www.haomeiwen.com/subject/sjxfzftx.html