假设我们有以下布局

 <Grid x:Name="Grid" ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions> <TextBlock x:Name="One"
Grid.Row=""
Text="" />
<TextBlock x:Name="Two"
Grid.Row=""
Text="" />
<TextBlock x:Name="Three"
Grid.Row=""
Text="" />
<TextBlock x:Name="Four"
Grid.Row=""
Text="" />
<TextBlock x:Name="Five"
Grid.Row=""
Text="" />
</Grid>

展示出来的界面是这样子的

我们尝试把2这一列删除~

Grid.Children.Remove(Two);

删除是删除了,但第二列还是占了位置啊!

于是我们尝试以下操作

Grid.RowDefinitions.Remove()

这样的操作仅仅是删除了最后一行,5这个Textbox只能向上靠拢。

因此我们在删除之后,需要重新指定一下新位置

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

这样就正常了,但 Grid.RowDefinitions.Remove()这里怎么也得指定一下位置吧?

var row = Grid.RowDefinitions[int.Parse(Two.GetValue(Grid.RowProperty).ToString())];
private void Remove()
{
var row = Grid.RowDefinitions[int.Parse(Two.GetValue(Grid.RowProperty).ToString())];
Grid.Children.Remove(Two);
Grid.RowDefinitions.Remove(row);
ReSetIndex();
}
private void ReSetIndex()
{
var row = ;
foreach (var borderGridChild in Grid.Children)
{
(borderGridChild as UIElement)?.SetValue(Grid.RowProperty, row++);
}
}

C# 关于Grid下动态删除行列的操作的更多相关文章

  1. 编辑 Ext 表格(一)——— 动态添加删除行列

    一.动态增删行 在 ext 表格中,动态添加行主要和表格绑定的 store 有关, 通过对 store 数据集进行添加或删除,就能实现表格行的动态添加删除.   (1) 动态添加表格的行  gridS ...

  2. js动态创建表格,删除行列的小例子

    js动态创建表格,删除行列的实例代码. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...

  3. baseadapter.getItemId的使用方法:实现listview筛选、动态删除

    转载:http://www.lai18.com/content/1631131.html 这里的listview筛选是指listview的adapter实现filter来过滤数据. “动态删除&quo ...

  4. 关于Jquery.validate.js中动态删除验证remove方法的Bug

    利用Jquery.validate.js 来做动态验证的时候,需要特定的情况下,删除添加opAmount的必须入力的Check $("#form").validate({ rule ...

  5. c++动态库封装及调用(2、windows下动态库创建)

    DLL即动态链接库(Dynamic-Link Libaray)的缩写,相当于Linux下的共享对象.Windows系统中大量采用了DLL机制,甚至内核的结构很大程度依赖与DLL机制.Windows下的 ...

  6. Hadoop DataNode 节点的动态添加和动态删除

    动态添加 DataNode 节点 hadoop环境是必须的 需要加入新的 DataNode 节点,前提是已经配置好 SSH 无密登录:直接复制已有DataNode中.ssh目录中的authorized ...

  7. 【案例分享】使用ActiveReports报表工具,在.NET MVC模式下动态创建报表

    提起报表,大家会觉得即熟悉又陌生,好像常常在工作中使用,又似乎无法准确描述报表.今天我们来一起了解一下什么是报表,报表的结构.构成元素,以及为什么需要报表. 什么是报表 简单的说:报表就是通过表格.图 ...

  8. jquery 动态增加table行,动态删除table行

    在html中我们大量的用到了局部刷新,局部刷新就是使用js来动态的修改html局部的数据.下面来介绍下使用jquery来动态的增加table的行,当然这种方式可以适用到任何的html组件中去. < ...

  9. Nacos下动态路由配置

    前言 Nacos最近项目一直在使用,其简单灵活,支持更细粒度的命令空间,分组等为麻烦复杂的环境切换提供了方便:同时也很好支持动态路由的配置,只需要简单的几步即可.在国产的注册中心.配置中心中比较突出, ...

随机推荐

  1. bootstrap导航菜单

    <!DOCTYPE html><html lang="zh-cn"><head><meta charset="utf-8&quo ...

  2. Linux下安装Pcntl PHP扩展

    //解压源码包 [root@centos src]# tar -zxvf php-5.5.35.tar.gz //进入pcntl扩展库 [root@centos src]# cd php-5.5.35 ...

  3. HttpAnalyzerStdV7安装教程

    相关链接:HttpAnalyzerStdV7使用教程 安装步骤:   1.解压压缩包   2.双击运行安装文件   3.根据向导提示点击Next   4.选择接受协议,点击Next   5.修改安装路 ...

  4. Java Random、ThreadLocalRandom、UUID类中的方法应用(随机数)

    1.Random:产生一个伪随机数(通过相同的种子,产生的随机数是相同的): Random r=new Random(); System.out.println(r.nextBoolean()); S ...

  5. c++基础之引用reference

    1.何为引用 简单来说就是,比如你换了个新名字,用新名字叫你,你也会答应 2.引用vs指针 -引用没有null,好比你说你换了个新名字,但是新名字是啥总得有点东西 -一旦引用被初始化后就不可以指到另外 ...

  6. hibernate的获取session的两方法比较,和通过id获取对象的比较,一级缓存二级缓存

    opensession与currentsession的联系与区别 在同一个线程中opensession的session是不一样的,而currentsession获取的session是一样的,这就保证了 ...

  7. React + Python 七月小说网 启程(一)

    一.为啥要做这个网站 很久没有写技术相关的博客了,最近几个月忙飞,各种工作,技术根本学不完,很难受. 趁着春节期间,终于有空闲时间做自己爱做的事情了,美滋滋. 热爱技术,热爱小说,于是诞生了个这么玩意 ...

  8. .net在线HTML编辑器

    //在线网页编辑器, <script> var editor2 = new baidu.editor.ui.Editor({//实例化编辑器 initialContent: '', min ...

  9. c#设计模式之:组合模式(Composite)

    一:引言 在软件开发过程中,我们经常会遇到处理简单对象和复合对象的情况,例如对操作系统中目录的处理,因为目录客园包括单独的文件,也可以包括文件夹,文件夹又是由文件组成的,由于简单对象和复合对象在功能上 ...

  10. Android app如何加密?

    欢迎访问网易云社区,了解更多网易技术产品运营经验. Android App包含的内容有dex文件,so文件,res,assets资源文件.对应的加密按此内容分为三大方面:dex保护.so加密.资源保护 ...