SliverLight注册字典转换器方法
SliverLight注册资源——本处以添加字典转换器为列。
该列子中,是动态添加DataGrid复杂表头,而数据源是字典集合,因此使用传统的数据绑定就不能(个人能力)实现。
添加表头并绑定数据代码如下。
其中ColumnItem是找的一个dll中的方法,该dll主要就是为了动态创建复杂表头而生,此处不做过多解释。第一个参数是表头名称,第二个参数是数据字典Key,第三个参数是字典转换器,第四个参数是数据显示位置,第五个参数是列宽。
如果不绑定第三个参数,则不能正常显示数据,显示情况如下:
这里重点描述第三个参数的由来:dicCommonValueConverter是字典转换器注册别名。
字典转换器的类:
public class DictionaryCommonValueConverter : System.Windows.Data.IValueConverter{/// <summary>/// /// </summary>/// <param name="value"></param>/// <param name="targetType"></param>/// <param name="parameter"></param>/// <param name="culture"></param>/// <returns></returns>public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture){if (value == null){ return null;}IDictionary<string, object> dic = value as IDictionary<string, object>;if (dic == null){return null;}object dicValue;if (dic.TryGetValue(parameter.ToString(), out dicValue)){return dicValue;}return null;}public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture){throw new NotSupportedException("不支持的转换。");}}
字典转换器必须实现IValueConverter接口,可在网上查阅。接下来用一.xaml文件注册此字典转换器:
<ResourceDictionaryxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"xmlns:convert="clr-namespace:Xunmei.Web.ShsdbManager.DataConverter" //转换器类空间名称><!-- ******注册转换器****** --><convert:DictionaryCommonValueConverter x:Key="dicCommonValueConverter" />//类名和别名 </ResourceDictionary>
使用这个注册方式有三种:
第一种是在App.xaml中执行
<Application x:Class="Xunmei.Web.ShsdbManager.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"><Application.Resources><!-- 应该在此定义应用程序级的资源。--><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="resources/styles/Styles.xaml"/></ResourceDictionary.MergedDictionaries></ResourceDictionary></Application.Resources> </Application>
<ResourceDictionary Source="resources/styles/Styles.xaml"/>是指注册文件Styles.xaml的路径。
但是此方法的使用前提下是程序运行先要走这个App文件,不然也不能注册。
第三种方式是在界面上注册:
如果是这个注册方法,就可以不适用Styles.xaml文件,直接使用字典转换器类文件。但是这个种方法也有局限性,只能在该前台界面使用,不能再后台使用。
第三种方法是在后台注册:
ResourceDictionary dicCommonValueConverter = new ResourceDictionary(); Application.LoadComponent(dicCommonValueConverter, new Uri("/Xunmei.Web.ShsdbManager.ShsdbManagerSL;component/Styles.xaml", UriKind.Relative)); Application.Current.Resources.MergedDictionaries.Add(dicCommonValueConverter);
在后台注册后就可以直接在后台绑定字典集合类型的数据。
因为本次案例用的是第三个方法。最终数据正常显示:
转载于:https://www.cnblogs.com/yxys/p/5560255.html
SliverLight注册字典转换器方法相关推荐
- pdf转换jpg转换器方法
pdf转换jpg转换器方法 事实上遇到PDF格式的文件转换成JPG格式的图片的情况,仅用迅捷PDF转换成JPG转换器自带的输出功能就可以实现了. 第一步:打开PDF格式转换器(建议使用最新v5.0版本 ...
- C#(WPF)去除事件中注册的事件处理方法!
在WPF中,移除一个事件中已经注册的处理方法,看似简单,实际还是很痛苦的一件事情.因为C#的灵活性,定义事件的方法也是多种多样. 我自己定义了一个事件: public event EventHandl ...
- 爬虫之requests模块cookieJar对象转换为cookies字典的方法
爬虫之requests模块cookieJar对象转换为cookies字典的方法 使用requests获取的resposne对象,具有cookies属性.该属性值是一个cookieJar类型,包含了对方 ...
- 【Android NDK 开发】JNI 动态注册 ( 动态注册流程 | JNI_OnLoad 方法 | JNINativeMethod 结构体 | GetEnv | RegisterNatives )
文章目录 I . 动态注册流程 ( 总结 ) II . JNI_OnLoad 方法 III . 被注册的本地 C/C++ 方法参数 IV . JNINativeMethod 结构体 ( 核心重点 ) ...
- zhlan--Python中的字典遍历方法 字典取值
一.Python中的字典遍历方法: info = { 'name':'xiaoming', 'sex':'nan', 'age':20, 'id':1} info2 = { 'name':'hhh', ...
- php实现小说字典功能_PHP实现获取并生成数据库字典的方法
本文实例讲述了PHP实现获取并生成数据库字典的方法.分享给大家供大家参考,具体如下: /** * 生成mysql数据字典 */ header("Content-type:text/html; ...
- php ajax邮箱,PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
前 言 直接上代码有点不厚道.于是按照天朝传统,整段描述吧....(本人语言表达能力有限,大家忍着看) 功 能 在网站注册用户时使用,主要为了无刷新异步验证用户输入的用户名或者Email是否已注册. ...
- Python 字典 fromkeys()方法
Python 字典 fromkeys() 方法用于创建一个新的字典,并以可迭代对象中的元素分别作为字典中的键,且所有键对应同一个值,默认为None. fromkeys() 方法语法: 1 dict.f ...
- Python列表和字典的方法总结
列表方法: 方法 说明 append( item ) 在列表末尾插入(item ) count( element ) 返回element在列表中出现的次数 extend( newlist ) 将new ...
最新文章
- Markdown通用的常用语法说明
- [渝粤教育] 武汉理工大学 认识武理 参考 资料
- 【转】dicom网络通讯入门(3)
- android 免root 模拟器,真正免root的Droidwall详细使用教程
- ARM上的Bootloader的具体实现1071098736
- iOS开发小技巧 -- tableView-section圆角边框解决方案
- es6.2.4-ansible部署
- 5V升压充电12.6V锂电池方案
- [模板] dp套dp bzoj5336: [TJOI2018]party
- python中判断无向图是否有环_数据结构与算法:17 图
- java crumb_vuex中,我在index.vue组件设置的值,为什么在另外一个组件crumb.vue获取不到...
- 小学生计算机应用手抄报,小学生科技手抄报大全
- linux 查询hba卡类型,Centos系统查询hba卡型号
- redis安装、持久化、数据类型、常用操作、操作键值、安全设置、慢查询日志、存储session、主从配置、集群介绍、集群搭建配置、集群操作,php安装redis扩展...
- 大数据面试指南【精华】
- Fluent 全流程求解多孔介质算例(1)
- SiteFactory 通用程序集中(PowerEasy.Common)的常用字符串处理函数
- bilibili有linux客户端吗,bilibili2021全新官网版
- 过关斩将拿下新浪offer记录
- 曲线绕y轴旋转一周所得旋转体体积_由曲线y=x,x=1,x=2,x轴围成的图形绕x轴旋转一周所得旋转体的体积是______.-数学-魔方格...
热门文章
- python3读取excel数据-python3读取Excel表格数据的代码分享
- python输出数据到excel-Python从数据库导出数据到Excel
- Java的ArrayList集合_JAVA之ArrayList集合
- JSR303(Bean Validation 1.0)
- LeetCode Minimum Path Sum(动态规划)
- 【转】解决keepalived正常启动但是虚IP(VIP)没有生成的问题
- 防止论坛批量小广告指南
- 纳税服务系统【异常处理、抽取BaseAction】
- MySQL存储过程详解 mysql 存储过程
- 工作在Amazon:为何晋升如此难?