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注册字典转换器方法相关推荐

  1. pdf转换jpg转换器方法

    pdf转换jpg转换器方法 事实上遇到PDF格式的文件转换成JPG格式的图片的情况,仅用迅捷PDF转换成JPG转换器自带的输出功能就可以实现了. 第一步:打开PDF格式转换器(建议使用最新v5.0版本 ...

  2. C#(WPF)去除事件中注册的事件处理方法!

    在WPF中,移除一个事件中已经注册的处理方法,看似简单,实际还是很痛苦的一件事情.因为C#的灵活性,定义事件的方法也是多种多样. 我自己定义了一个事件: public event EventHandl ...

  3. 爬虫之requests模块cookieJar对象转换为cookies字典的方法

    爬虫之requests模块cookieJar对象转换为cookies字典的方法 使用requests获取的resposne对象,具有cookies属性.该属性值是一个cookieJar类型,包含了对方 ...

  4. 【Android NDK 开发】JNI 动态注册 ( 动态注册流程 | JNI_OnLoad 方法 | JNINativeMethod 结构体 | GetEnv | RegisterNatives )

    文章目录 I . 动态注册流程 ( 总结 ) II . JNI_OnLoad 方法 III . 被注册的本地 C/C++ 方法参数 IV . JNINativeMethod 结构体 ( 核心重点 ) ...

  5. zhlan--Python中的字典遍历方法 字典取值

    一.Python中的字典遍历方法: info = { 'name':'xiaoming', 'sex':'nan', 'age':20, 'id':1} info2 = { 'name':'hhh', ...

  6. php实现小说字典功能_PHP实现获取并生成数据库字典的方法

    本文实例讲述了PHP实现获取并生成数据库字典的方法.分享给大家供大家参考,具体如下: /** * 生成mysql数据字典 */ header("Content-type:text/html; ...

  7. php ajax邮箱,PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)

    前 言 直接上代码有点不厚道.于是按照天朝传统,整段描述吧....(本人语言表达能力有限,大家忍着看) 功 能 在网站注册用户时使用,主要为了无刷新异步验证用户输入的用户名或者Email是否已注册. ...

  8. Python 字典 fromkeys()方法

    Python 字典 fromkeys() 方法用于创建一个新的字典,并以可迭代对象中的元素分别作为字典中的键,且所有键对应同一个值,默认为None. fromkeys() 方法语法: 1 dict.f ...

  9. Python列表和字典的方法总结

    列表方法: 方法 说明 append( item ) 在列表末尾插入(item ) count( element ) 返回element在列表中出现的次数 extend( newlist ) 将new ...

最新文章

  1. Markdown通用的常用语法说明
  2. [渝粤教育] 武汉理工大学 认识武理 参考 资料
  3. 【转】dicom网络通讯入门(3)
  4. android 免root 模拟器,真正免root的Droidwall详细使用教程
  5. ARM上的Bootloader的具体实现1071098736
  6. iOS开发小技巧 -- tableView-section圆角边框解决方案
  7. es6.2.4-ansible部署
  8. 5V升压充电12.6V锂电池方案
  9. [模板] dp套dp bzoj5336: [TJOI2018]party
  10. python中判断无向图是否有环_数据结构与算法:17 图
  11. java crumb_vuex中,我在index.vue组件设置的值,为什么在另外一个组件crumb.vue获取不到...
  12. 小学生计算机应用手抄报,小学生科技手抄报大全
  13. linux 查询hba卡类型,Centos系统查询hba卡型号
  14. redis安装、持久化、数据类型、常用操作、操作键值、安全设置、慢查询日志、存储session、主从配置、集群介绍、集群搭建配置、集群操作,php安装redis扩展...
  15. 大数据面试指南【精华】
  16. Fluent 全流程求解多孔介质算例(1)
  17. SiteFactory 通用程序集中(PowerEasy.Common)的常用字符串处理函数
  18. bilibili有linux客户端吗,bilibili2021全新官网版
  19. 过关斩将拿下新浪offer记录
  20. 曲线绕y轴旋转一周所得旋转体体积_由曲线y=x,x=1,x=2,x轴围成的图形绕x轴旋转一周所得旋转体的体积是______.-数学-魔方格...

热门文章

  1. python3读取excel数据-python3读取Excel表格数据的代码分享
  2. python输出数据到excel-Python从数据库导出数据到Excel
  3. Java的ArrayList集合_JAVA之ArrayList集合
  4. JSR303(Bean Validation 1.0)
  5. LeetCode Minimum Path Sum(动态规划)
  6. 【转】解决keepalived正常启动但是虚IP(VIP)没有生成的问题
  7. 防止论坛批量小广告指南
  8. 纳税服务系统【异常处理、抽取BaseAction】
  9. MySQL存储过程详解 mysql 存储过程
  10. 工作在Amazon:为何晋升如此难?