如何從 Datagrid 中獲得單元格的內容與 使用值轉換器進行綁定數據的轉換IValueConverter...

一、如何從 Datagrid 中獲得單元格的內容

   DataGrid?屬于一種?ItemsControl,?因此,它有?Items?屬性并且用ItemContainer?封裝它的?items.?

但是,WPF中的DataGrid?不同于Windows Forms中的?DataGridView。?在DataGridItems集合中,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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/378046.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378046.shtml
英文地址,請注明出處:http://en.pswp.cn/news/378046.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C++ grammar】常量、指針、Usage of using, typedef, and #define

目錄1、常量 &#xff08;Constant&#xff09;2、指針&#xff08;Pointer&#xff09;3、Usage of using, typedef, and #define1、常量 &#xff08;Constant&#xff09; 常量是程序中一塊數據&#xff0c;這個數據一旦聲明后就不能被修改了。 如果這塊數據有一個名字&am…

斯威夫特山地車_斯威夫特| 兩個數字相加的程序

斯威夫特山地車In this program, we will have an idea - how two numbers can be added and displayed as the output on the screen? 在此程序中&#xff0c;我們將有一個想法- 如何將兩個數字相加并顯示為屏幕上的輸出 &#xff1f; Open XCode terminal and type the fol…

四、色彩空間

一、色彩空間 1、什么是色彩空間&#xff1f; 色彩空間是定義的顏色范圍。 2、常見的色彩空間有哪些&#xff1f; ①RGB ②HSV 在OpenCV中&#xff0c;Hue的值為0~180&#xff0c;之所以不是360是因為&#xff0c;8位存不下&#xff0c;故進行歸一化操作&#xff0c;使得H…

Oracle LOB 詳解

一. 官方說明Oracle 11gR2 文檔&#xff1a;LOB Storagehttp://download.oracle.com/docs/cd/E11882_01/appdev.112/e18294/adlob_tables.htm#ADLOB45267Oracle 10gR2 文檔&#xff1a;LOBs in Tableshttp://download.oracle.com/docs/cd/B19306_01/appdev.102/b14249/adlob_t…

FIFA的完整形式是什么?

國際足聯&#xff1a;國際足球聯合會 (FIFA: Federation Internationale de Football Association) FIFA is an abbreviation of the "Federation Internationale de Football Association" in French. It is also known as the International Federation of Associa…

POJ 1654 Area

題意&#xff1a;從原點出發&#xff0c;沿著8個方向走&#xff0c;每次走1個點格或者根號2個點格的距離&#xff0c;最終回到原點&#xff0c;求圍住的多邊形面積。分析&#xff1a;直接記錄所經過的點&#xff0c;然后計算多邊形面積。注意&#xff0c;不用先保存所有的點&am…

【C++ grammar】重載、內聯、變量作用域、帶默認參數的函數

目錄1、變量的作用域1. 變量的作用域分類2. Unary Scope Resolution (一元作用域解析運算符)2、重載函數3、帶有默認參數值的函數4、重載函數 VS 帶有默認參數值的函數5、內聯函數&#xff08;Inline Function&#xff09;1. 普通函數的優缺點2. 使用內聯函數3. 定義內聯函數4.…

五、像素運算

一、相關概念 1、算術運算 Ⅰ加減乘除 Ⅱ調節亮度 Ⅲ調整對比度 2、邏輯運算 Ⅰ與或非 Ⅱ遮罩層控制 二、圖像算術運算(加減乘除均值方差) 其中圖像的加減乘除需要保證兩張圖像的大小相同 import cv2 import numpy as npdef add(src1,src2):dst cv2.add(src1,src2)cv2.im…

創建bootstrap項目_使用Bootstrap創建第一個網頁

創建bootstrap項目使用Bootstrap創建第一個網頁 (Create First Webpage with Bootstrap) In the previous article, we learned "how to setup bootstrap?" for a web project. If you haven’t gone through that, it is recommended to read it. Now, in this art…

Chaikin Curve(球面插值)

在兩條折線間完成平滑的過渡是 用畫布做UI 或者做類似地圖編輯器一類的工作的 很常見的任務。 怎么樣化方為圓是決定工作效率的很重要的因素。&#xff08;當需要編輯的曲線多起來&#xff0c; 復雜起來的時候&#xff0c;這會是件相當繁重的工作&#xff09; 最容易想到的莫非…

【2020 電設G題 圖像題解】

博主聯系方式: QQ:1540984562 QQ交流群:892023501 群里會有往屆的smarters和電賽選手,群里也會不時分享一些有用的資料,有問題可以在群里多問問。 2022.3.10新增訂閱通知 近期把此專欄設置為了付費模式,可以直接花9.9買這個專欄,買了就可以直接這個專欄的所有文章了。后…

六、ROI和泛洪填充

一、ROI ROI&#xff1a;region of interest&#xff0c;即感興趣區域。 一般主要通過numpy來獲取ROI 將某區域轉變為灰色圖片再覆蓋原圖像 import cv2 import numpy as npsrc cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg") cv2.imshow(&quo…

VS2005 there is no source code available for the current location 解決方案

1.首先試最常規的方法&#xff1a;Clean and then rebuild solution&#xff0c;但是沒有解決 2.進入Tools>Options,選擇Debugging>General 卻掉 Enable address-level debugging 選項&#xff0c;在去掉 Require source files to exactly match the original version. O…

django 靜態數據_如何在Django中使用靜態數據?

django 靜態數據Static Data means those data items that we cannot want to change, we want to use them as it is like audio, video, images, files etc. 靜態數據是指我們不想更改的數據項&#xff0c;我們想像音頻&#xff0c;視頻&#xff0c;圖像&#xff0c;文件等那…

Leetcode226. 翻轉二叉樹(遞歸、迭代、層序三種解法)

目錄題目1、層序法&#xff1a;2、遞歸法&#xff1a;1、先序遍歷&#xff08;中左右&#xff09;2、后序遍歷&#xff08;左右中&#xff09;3、遞歸中序遍歷為什么不行&#xff08;左中右&#xff09;3、迭代法&#xff1a;1、先序遍歷2、中序遍歷3、后序遍歷為什么迭代法的中…

Asp.net 獲取當前目錄的三種方法

方法一&#xff1a; string sPath System.IO.Path.GetDirectoryName(Page.Request.PhysicalPath) 方法二&#xff1a; string sPath System.Web.HttpContext.Current.Request.MapPath("/") 方法三&#xff1a; string s…

一款jQuery立體感動態下拉導航菜單特效

一款jQuery立體感動態下拉導航菜單特效,鼠標經過&#xff0c;在菜單欄上方下拉出一個背景圖片&#xff0c;效果十分不錯的一款jquery特效。 對IE6都是兼容的&#xff0c;希望大家好好研究研究。 適用瀏覽器&#xff1a;IE6、IE7、IE8、360、FireFox、Chrome、Safari、Opera、傲…

七、模糊操作

一、模糊操作基本原理 1&#xff0c;基于離散卷積 2&#xff0c;定義好每一個卷積核 3&#xff0c;不同卷積核得到不同的卷積效果 4&#xff0c;模糊是卷積的一種表象 二、1*3卷積核舉例 每次右移一格&#xff0c;進行對應相乘再求和。1*3的卷積核左右兩邊的元素并沒有處理而…

LeetCode 100. 相同的樹 思考分析

給定兩個二叉樹&#xff0c;編寫一個函數來檢驗它們是否相同。 如果兩個樹在結構上相同&#xff0c;并且節點具有相同的值&#xff0c;則認為它們是相同的。 示例 1: 輸入: 1 1 / \ / 2 3 2 3 [1,2,3], [1,2,3]輸出: true 示例 2: 輸入: 1 1 / 2 2 [1,2], [1,null,2]輸…

在Python中以二進制格式輸入數字

Syntax to convert binary value to an integer (decimal format), 將二進制值轉換為整數(十進制格式)的語法&#xff0c; int(bin_value, 2)Here, 這里&#xff0c; bin_value should contain the valid binary value bin_value應該包含有效的二進制值 2 is the base value …