自定义MarkupExtension的学习,以及WPF中Combobox绑定枚举类型
我们上一期讲到ComBobox绑定数据,https://www.cnblogs.com/guchen33/p/17630808.html
这次我们简单化一下,
正常来讲WPF中绑定不了枚举的像这样
//前台代码
<ComboBox ItemsSource="{Binding MyEnum}"/>
//后台VM
public enum MyEnum
{
One,
Two,
Three,
Four,
Five
}
这种会报错
这个时候我们需要用到MarkupExtension类
1、新建一个EnumBindingExtension类,放在Enums文件夹
public class EnumBindingExtension : MarkupExtension
{
private Type _enumType;
public EnumBindingExtension(Type enumType)
{
if (enumType == null || !enumType.IsEnum)
{
throw new ArgumentException("Enum type is required.");
}
_enumType = enumType;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return Enum.GetValues(_enumType);
}
}
MarkupExtension是Xaml的标记扩展
在这段代码中我们自定义EnumBindingExtension然后进行类型转换
然后,前台代码写
<ComboBox ItemsSource="{markup:EnumBinding {x:Type vm: MyEnum}}" Width="200" Height="24"/>
VM代码写
public enum MyEnum
{
One,
Two,
Three,
Four,
Five
}
运行后可看到

接下来。我们讲讲MarkupExtension的其他用法
首先我们继续自定义类
public class TextBlockExtension : MarkupExtension
{
// 实现基类中的 ProvideValue 方法 IServiceProvider暂时用不到
public override object ProvideValue(IServiceProvider serviceProvider)
{
return "Hello World!";
}
}
前台直接写
<TextBlock Text="{markup:TextBlock}" />
可以看到我们的TextBlock Text绑定的值是Hello World!
这种写法对于TextBlock直接写
<TextBlock Text="Hello World!" />
复杂了一部分,但是对于有我们使用其他UIElement能更好的扩展Xaml文件
自定义MarkupExtension的学习,以及WPF中Combobox绑定枚举类型的更多相关文章
- WPF中ComboBox绑定数据库自动读取产生数据
前台端 <ComboBox HorizontalAlignment="Name="cmb_SSBM" DisplayMemberPath="NAME&qu ...
- silverlight中 ComboBox绑定数据库,并获取当前选定值
silverlight中 ComboBox绑定数据库,并获取当前选定值 在silverlight中 用combobox下拉菜单绑定数据库的方法和用DataGrid绑定数据库的方法类似. page.xa ...
- 封装:WPF中可以绑定的BindPassWord控件
原文:封装:WPF中可以绑定的BindPassWord控件 一.目的:本身自带的PassWord不支持绑定 二.Xaml部分 <UserControl x:Class="HeBianG ...
- Python中模拟enum枚举类型的5种方法分享
这篇文章主要介绍了Python中模拟enum枚举类型的5种方法分享,本文直接给出实现代码,需要的朋友可以参考下 以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码代码如下: # way1 ...
- ComboBox在WPF中的绑定示例:绑定项、集合、转换,及其源代码
示例1.Selector(基类) 的示例Controls/SelectionControl/SelectorDemo.xaml <Page x:Class="Windows10.Con ...
- WPF中ComboBox控件绑定键值对操作
WPF中下拉框将键值对作为其数据源的具体操作.本实例以枚举类型以及枚举特性描述字符串生成键值对来进行. namespace ViewC { /// <summary> /// View.x ...
- WPF中RadioButton绑定数据的正确方法
RadioButton一般用于单选的时候,也就是从一组值中选择一个值. 比如性别有“男”和“女”两种取值,而对于一个员工的实例来说,性别的取值要么是男,要么是女. 这种时候一般就会用到RadioBut ...
- C# 中 datagridview 绑定BindingList类型和更新
C# 中的datagridview是一个非常有用且强大的控件,可以用来绑定数据库.绑定LIST类型的变量等等. 这里我们说一说绑定List类型并实时更新datagridview的情况.实时更新,指的是 ...
- Java中的Enum枚举类型总结
废话不多说,直接上代码,该例子来源于:http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html public enum Planet { ...
- [小技巧]C#中如何为枚举类型添加描述方法
背景 在我们的日常开发中,我们会经常使用枚举类型.有时我们只需要显示枚举的值或者枚举值对应名称, 但是在某些场景下,我们可能需要将枚举值显示为不同的字符串. 例: 当前我们有如下枚举Level pub ...
随机推荐
- linux统计文件大小-以KB、MB、GB、TB为单位
fileSize=`hadoop fs -ls /data/internetLog/home/DPI/idc/20180806/*201808062[0-2]* | awk 'BEGIN{ sum=0 ...
- JS 判断对象属性是否存在,判断是否包含某个属性,是否为自身属性
壹 ❀ 引 看过博主JS 疫情宅在家,学习不能停,七千字长文助你彻底弄懂原型与原型链这篇文章的同学应该知道,文中有专门介绍这个问题.那么为什么我要另起一篇再说一次呢?原因有两个,一是介绍原型与原型链的 ...
- JS 页面离开事件 页面关闭事件,实现登录成功返回上个页面
壹 ❀ 引 登录成功后跳转到上一个页面是很常见的需求,比如在天猫添加购物车时网站会效验用户登录情况,若未登录则跳转登录,登录成功返回到先前的商品页. 这个功能实现并不困难,但因为我的奇思妙想让我先后了 ...
- NC16122 郊区春游
题目链接 题目 题目描述 今天春天铁子的班上组织了一场春游,在铁子的城市里有n个郊区和m条无向道路,第i条道路连接郊区Ai和Bi,路费是Ci.经过铁子和顺溜的提议,他们决定去其中的R个郊区玩耍(不考虑 ...
- Apache HTTP Server、IIS反向代理设置
Apache HTTP Server 在 Apache 中设置反向代理,需要使用 mod_proxy 和相关的模块,如 mod_proxy_http.以下是一个基本的配置示例: 确保已经安装并启用了 ...
- Wireguard笔记(一) 节点安装配置和参数说明
目录 Wireguard笔记(一) 节点安装配置和参数说明 Wireguard笔记(二) 命令行操作 Wireguard笔记(三) lan-to-lan子网穿透和多网段并存 简介 虚拟子网软件,类似于 ...
- Springboot+LayUI实现一个简易评论系统
说明 这是个简单的评论系统,目的在于介绍简单的评论和回复功能.同时基于此可以扩展更全面的.自定义的评论系统,本工程仅供学习交流使用.喜欢的朋友给个赞:) 源码 https://gitee.com/in ...
- Vue+SpringBoot+ElementUI实战学生管理系统-1.项目介绍
1.项目介绍 前段时间有位老铁问老徐有没有Vue+SpringBoot+ElementUI前后分离的项目想学习下,抱歉前端时间有点忙.千呼万唤始出来,做得不是很到位,需要的朋友可以拿去自己定制.:) ...
- 项目实战:Qt编译Qt库以及使用C#调用Qt库,并实现C#集成Qt的tcp客户端
需求 1.Qt已经开发了应用,封装成Qt库,以供C#调用. 2.Qt的tcp客户端封装,以供C#调用,双向传递数据. 原理 1.使用QtCreator编译msvc版本的Qt库: 2.使 ...
- PrettyTable模块
# 用来生成美观的ASCII格式的表格 pip install prettytable # 导入 from prettytable import PrettyTable # 使用 tb = pt.Pr ...