[WPF系列]-DataBinding 枚举类型数据源
public class EnumerationDataProvider : ObjectDataProvider
{
public Type EnumerationType { get; set; } public string NoneValue { get; set; } public string NoneDisplayValue { get; set; } public EnumerationDataProvider()
{
this.MethodName = "GetEnumerations";
this.ObjectType = typeof(EnumerationHelper);
} protected override void EndInit()
{
this.MethodParameters.Clear();
this.MethodParameters.Add(this.EnumerationType);
this.MethodParameters.Add(this.NoneValue);
this.MethodParameters.Add(this.NoneDisplayValue); base.EndInit();
} private static class EnumerationHelper
{
private const string NoneDefaultValue = "None";
private const string NoneDisplayDefaultValue = ""; public static IDictionary<object, string> GetEnumerations(
Type enumType, string noneValue, string noneDisplayValue)
{
// Setup defaults if none exists.
if (string.IsNullOrWhiteSpace(noneValue)) noneValue = NoneDefaultValue;
if (string.IsNullOrWhiteSpace(noneDisplayValue)) noneDisplayValue = NoneDisplayDefaultValue; IDictionary<object, string> items = new Dictionary<object, string>(); // Find the None enumeration value.
string noneStringValue = (from n in Enum.GetNames(enumType)
where string.Compare(n, noneValue, StringComparison.OrdinalIgnoreCase) == 0
select n).FirstOrDefault(); bool hasNoneValue = !string.IsNullOrWhiteSpace(noneStringValue); object noneEnumerationValue = null;
if (hasNoneValue)
{
// Parse the None value if it exists and add it as the first item.
noneEnumerationValue = Enum.Parse(enumType, noneStringValue, true);
items.Add(noneEnumerationValue, noneDisplayValue);
} // Select all enumeration values where not equal to the None value and order by
// the enumeration value name.
var orderedEnums = from v in Enum.GetValues(enumType).Cast<object>()
where !v.Equals(noneEnumerationValue)
orderby Convert.ToString(v) select v; foreach (var value in orderedEnums)
items.Add(value, Convert.ToString(value)); return items;
}
}
}
[WPF系列]-DataBinding 枚举类型数据源的更多相关文章
- [WPF系列]-DataBinding(数据绑定) 自定义Binding
自定义Binding A base class for custom WPF binding markup extensions BindingDecoratorBase Code: public c ...
- WorldWind源码剖析系列:枚举类型
PluginSDK中的枚举型主要有以下这些: public enum AltitudeMode//高度模式枚举 { ClampedToGround,//强制到地面模式 RelativeToGround ...
- [WPF系列]-DataBinding 绑定计算表达式
Width="{Binding RelativeSource={RelativeSource Self}, Path=ActualWidth, Converter={Stat ...
- 在WPF中使用变通方法实现枚举类型的XAML绑定
问题缘起 WPF的分层结构为编程带来了极大便利,XAML绑定是其最主要的特征.在使用绑定的过程中,大家都普遍的发现枚举成员的绑定是个问题.一般来说,枚举绑定多出现于与ComboBox配合的情况,此时我 ...
- .net MVC 中枚举类型Enum 转化成 下拉列表的数据源
第一次写技术博文,记录下工作中遇到的问题,给自己的知识做个备份,也希望能帮助到其他的同学 最近接手了公司的一个新的项目.有个页面涉及相关设计. 分享一个经常用到的吧. 方法一: 直入主题吧 我们的目的 ...
- 【C#进阶系列】15 枚举类型和位标志
实际上本章就只讲枚举类型,因为位标志本来就可以当做一个特殊的枚举类型. 关于枚举类型 枚举类型是一种消灭魔法数字的好方法,使程序更容易编写,阅读和维护. 枚举类型是值类型,然而有别于其它值类型,枚举类 ...
- Python3基础系列——枚举类型大揭秘
为什么使用枚举 枚举类型是定义常量的一种最优选择. 常量的广义概念是:不变化的量 对于常量的通俗比喻--如同大山不被轻而易举地改变 地球上的重力加速度到海枯石烂也会改变 人们使用的常量是时间不很漫长的 ...
- [WPF系列]从基础起步学习系列计划
引言 WPF技术已经算不什么新技术,一搜一大把关于WPF基础甚至高级的内容.之前工作中一直使用winform所以一直没有深入学习WPF,这次因项目中使用了WPF技术来实现比较酷的展示界面.我在这里只是 ...
- [WPF系列]-数据邦定之DataTemplate 对分层数据的支持
到目前为止,我们仅讨论如何绑定和显示单个集合. 某些时候,您要绑定的集合包含其他集合. HierarchicalDataTemplate 类专用于 HeaderedItemsControl 类型以显示 ...
随机推荐
- 通过Canvas + JS 实现简易时钟实战
最近通过各种渠道学习了下html5中的canvas元素,为了练练手就随手写了一个简易的时钟.时钟本身不复杂,没有使用图片进行美化,下面就与大家分享一下具体的代码: 这是最终实现的效果: 部分的启发点来 ...
- DataTable数据批量写入数据库三种方法比较
DataTable数据批量写入数据库三种方法比较 标签: it 分类: C#1) insert循环插入:2) sqldataadapter.update(dataset,tablename); ...
- string转byte[]
static byte[] GetBytes(string str) { byte[] bytes = new byte[str.Length * sizeof(char)]; System.Buff ...
- HTML5翻页电子书
体验效果:http://hovertree.com/texiao/jquery/60/ 图片请用正方形的 参考:http://hovertree.com/h/bjaf/d339euw9.htmhttp ...
- 使用KMP算法判断是否为旋转词
假设有两个字符串A.B,要判断它们是否为旋转词,只需构造一个"A+A"字符串,再与B比较,若B为A的旋转词,则使用KMP算法是可以得到结果的 代码如下: import java.u ...
- 新建 .NET Core 项目 -- Hello World!
一.开发工具安装 1.可选模式一 (不推荐,此为Windows开发方式) 安装 Visual Studio 2015 / Visual Studio 2015 Update 3 / .NET Core ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(23)-设置角色遗留问题和为权限设置角色以及EasyUI Tabs的使用
ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 ...
- ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)
ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件) Startup Class 1.Startup Constructor(构造函数) 2.Configure ...
- jquery模拟LCD 时钟
查看效果网址:http://keleyi.com/keleyi/phtml/jqtexiao/24.htm 以下是HTML文件源代码: <!DOCTYPE html PUBLIC "- ...
- less hack 兼容
less hack 兼容 css做兼容是在所难免的,那么用less写css代码时怎样hack呢?倘若用css的方法直接在后面写上类似“\9”编译是要报错的.下面是我尝试的两个小方法仅供参考: 1. ...