一、如何从 Datagrid 中获得单元格的内容

   DataGrid 属于一种 ItemsControl, 因此,它有 Items 属性并且用ItemContainer 封装它的 items.

但是,WPF中的DataGrid 不同于Windows Forms中的 DataGridView。 在DataGrid的Items集合中,DataGridRow

是一个Item,但是,它里面的单元格却是被封装在 DataGridCellsPresenter 的容器中;因此,我们不能使用

像DataGridView.Rows.Cells 这样的语句去获得单元格的内容。但是,在WPF中我们可以通过可视树(VisualTree)

去进入到控件“内部“, 那么,我们当然可以通过VisualTree进入DataGrid中的DataGridRow 和 DataGridCellsPresenter,

并且得到在DataGridCellsPresenter中的实例, 大家可以通过以下的代码遍历VisualTree

DataGridRow rowContainer = (DataGridRow)dataGrid1.ItemContainerGenerator.ContainerFromIndex(rowIndex);
DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(rowContainer);
DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex);// ...public static T GetVisualChild<T>(Visual parent) where T : Visual
{T child = default(T);int numVisuals = VisualTreeHelper.GetChildrenCount(parent);for (int i = 0; i < numVisuals; i++){Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);child = v as T;if (child == null)child = GetVisualChild<T>(v);elsebreak;}return child;
}

 二、WPF 使用值转换器进行绑定数据的转换IValueConverter

    有的时候,我们想让绑定的数据以其他的格式显示出来,或者转换成其他的类型,我们可以

使用值转换器来实现.比如我数据中保存了一个文件的路径”c:\abc\abc.exe”,但是我想让他在前台

列表中显示为”abc.exe”.首先我们先建一个IvalueConverter接口的类.

  

class GetFileName : IValueConverter
{  //Convert方法用来将数据转换成我们想要的显示的格式  public object Convert(object value, Type targetType, object parameter, CultureInfo culture)  {  FileInfo fi = new FileInfo((string)value);  return fi.Name;  }  //ConvertBack方法将显示值转换成原来的格式,因为我不需要反向转换,所以直接抛出个异常  public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)  {  throw new NotImplementedException();  }
}  

为了使用这个转换器,我们要将项目的名称空间映射到xaml中,比如我项目名字为自动更新,用local作为空间名称前缀

xmlns:local="clr-namespace:命名空间"  

为了使用的更方便,我们在Resources集合中创建一个转换器对象

<Window.Resources>  <local:GetFileName x:Key="GetFileName"></local:GetFileName>
</Window.Resources>

现在我们去绑定数据的地方使用StaticResource来指向转换器

<TextBlock>  <TextBlock.Text>  <Binding Path="FileName">  <Binding.Converter>  <local:GetFileName></local:GetFileName>  </Binding.Converter>  </Binding>  </TextBlock.Text>
</TextBlock>  

或者这样使用:

<TextBlock Text="{Binding Path=FileName,Converter={StaticResource GetFileName}}"  />

转载于:https://www.cnblogs.com/jameslif/p/3209955.html

如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter...相关推荐

  1. 计算机基础知识教程excel单元格拆分,电脑内怎么将excel表格中某个单元格的内容拆分至不同单元格里...

    电脑内怎么将excel表格中某个单元格的内容拆分至不同单元格里 当我们在使用电脑的时候,可以下载excel软件来处理数据文件,那么如果想要将一个单元格中的内容拆分到不同的单元格中的话,应如何操作呢?接 ...

  2. 在DataGrid中合并单元格行

    最近在做项目的时候经常遇到要合并单元格的情况,发现这个东西.net中并没有现成的方法,研究了一下,总结了两种方法. 这个主要都是行合并的,有以下两种情况 1.多行合并为一行,其中将某个或某几个单元格的 ...

  3. 计算机一级excel单元格,在Excel工作表中选择单元格及其内容

    在工作表 (工作表:在 Excel 中用于存储和处理数据的主要文档.也称为电子表格.工作表由排列成行或列的单元格组成.工作表总是存储在工作簿中.)中,您可以选择单元格.区域 (区域:工作表上的两个或多 ...

  4. 如何使用Python提取Excel中固定单元格的内容

    正文共:1234 字 31 图,预估阅读时间:1 分钟 之前转载了颜总的Python环境搭建文章(Python办公自动化-环境搭建),很久过去了,颜总也没有再更新.现在我有一个需求,就是我手上有大量格 ...

  5. datagrid wpf 获取选中_c# WPF DataGrid 获取选中单元格信息

    private void Button_Click(objectsender, RoutedEventArgs e) { DataGridCell cell= dg.GetCell(1, 2); Te ...

  6. cxgrid中纵横单元格合并_被合并单元格折磨疯的我,真后悔没早点知道这个Excel技巧!...

    在大家日常的工作中,经常会用到Excel合并单元格,然而合并单元格其实只是美化了表格,它会使我们后续的统计工作遇到很多麻烦,今天就给大家提供两个解决这个问题的思路. 01 合并单元格的基本操作方法 在 ...

  7. 在excel工作表中c1单元格_已知Excel工作表中A1单元格和B1单元格的值分别为“电子科技大学”、“信息中心”,要求在C1单元格显示“...

    已知Excel工作表中A1单元格和B1单元格的值分别为"电子科技大学"."信息中心",要求在C1单元格显示" 更多相关问题 所谓犯罪现象的特性,是指为 ...

  8. html 鼠标单击单元格,vue-easytable点击表格中某个单元格操作

    一:vue-easytable的地址 http://doc.huangsw.com/vue-easytable/app.html#/table/hideTable 二:改变当前鼠标悬浮单元格的样式 1 ...

  9. python 读excel中的sheet_Python使用一些背景颜色读取Excel工作表(xlsx)中的单元格?...

    我正在尝试阅读excel表(xlsx),它使用背景颜色来区分值. 我尝试了以下库:大熊猫,没有找到任何选择阅读基于背景颜色的细胞. xlrd. import xlrd xlrd.open_workbo ...

最新文章

  1. 使用dbms_stats.gather_table_stats调整表的统计信息
  2. 并发工具类【线程安全相关的类】
  3. 2008年12月31日,博客园开博
  4. python 嵌套型partials(nested partials)的使用
  5. mnist手写数字数据集_mnist手写数据集(1. 加载与可视化)
  6. yy神曲url解析php_php解析url的三个示例
  7. yum方式安装android_linux yum 命令 详解
  8. Facebook如何“养号”干货分享
  9. 【机房收费系统】---结账
  10. Linux后门入侵检测工具 rkhunter 安装使用
  11. 怎样安装php5_如何安装php5.3
  12. 十大网络安全策略 打造坚固的内网
  13. Linux下七种文件类型、文件属性及其查看方法
  14. 详解 torch.max 函数
  15. No such file or directory @ rb_sysopen
  16. 【转】 bio 与块设备驱动
  17. 剪辑软件生产力工具pr,ae,达芬奇对比
  18. 什么是Base-64编码
  19. Python之基础详解(十二):进阶,用pyecharts绘制世界地图、玫瑰图、雷达图
  20. postgresql系统架构图

热门文章

  1. PHP在程序处理过程中动态输出内容
  2. jquery简单实现树形结构收缩展开效果
  3. javascript---parseInt(08)或parseInt(09)转换返回0的解决办法
  4. [你必须知道的.NET] 第一回:恩怨情仇:is和as
  5. opencl 加速 c语言程序_Win10应用获得面向OpenCL和OpenGL的兼容层
  6. tf.nn.softmax
  7. BeanUtils包的使用
  8. CSS浏览器兼容性问题
  9. nginx部署与小程序配置
  10. 摄像头分辨率怎么调整_亿联CAM50 - 智能话机专属高清摄像头