Grid下的动态删除(隐藏)

假设我们存在如下布局:


        
            
            
            
            
            
        

        
        
        
        
        
    

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

Grid下的动态删除(隐藏)_第1张图片
原始布局

现在我们需要删除中间的元素,假设删除2
Grid.Children.Remove(Two);
然而,很不幸的是,它现在是这个样子:
Grid下的动态删除(隐藏)_第2张图片
删除之后的布局

留下的控件疯狂暗示,这个行要删除啦。于是我们尝试将行进行删除~

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下的动态删除(隐藏)_第3张图片
最终结果

你可能感兴趣的:(Grid下的动态删除(隐藏))