自定义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 ...
随机推荐
- Windows 10 配置Java 环境变量
下载 JDK 下载地址:https://www.oracle.com/java/technologies/downloads/ 点击下载按钮: 开始安装JDK: 可以设置为你想安装的路径. 环境变量配 ...
- NC13611 树
题目链接 题目 题目描述 shy有一颗树,树有n个结点.有k种不同颜色的染料给树染色.一个染色方案是合法的,当且仅当对于所有相同颜色的点对(x,y),x到y的路径上的所有点的颜色都要与x和y相同.请统 ...
- NC15172 情人节的电灯泡
题目链接 题目 题目描述 情人节到了,小芳和小明手牵手,打算过一个完美的情人节,但是小刚偏偏也来了,当了一个明晃晃的电灯泡,小明很尴尬,就和小刚说,我交给你个任务,你完成了我俩就带你玩,否则你就回家吧 ...
- 我的小程序之旅六:微信公众号授权登录(适用于H5小程序)
实现步骤 1 第一步:用户同意授权,获取code 2 第二步:通过code换取网页授权access_token 3 第三步:刷新access_token(如果需要) 4 第四步:拉取用户信息(需sco ...
- C++ sentry 如何压缩日志文件
项目中在使用 sentry 上传事件的 attachment 函数过程中发现,附带的 log 文件是未压缩的,于是有了需求,即需要在 sentry 内部将未压缩的文件流压缩后再上传给服务器 这个需求看 ...
- 【Android逆向】frida 破解 jwxdxnx02.apk
apk 路径: https://pan.baidu.com/s/1cUInoi 密码:07p9 这题比较简单,主要是用于练习frida 1. 安装apk到手机 需要输入账号密码 2. 使用jdax 查 ...
- WSL2镜像文件压缩
WSL2的镜像文件(*.vhdx)支持自动扩容,但是一般不会自动缩容.一旦某次存放过大文件以后,即使后续删除,镜像文件体积仍然不会缩小,导致大量磁盘空间浪费.因此,可以定期对镜像文件进行手动压缩. 镜 ...
- Ubuntu虚拟机开机显示initramfs
因为我的虚拟机路径放在了移动硬盘当中,所以连接有点失常就断开了,紧接着虚拟机也异常关闭了. 重启后进入了initramfs界面 查看出错的分区,如下图所示,是/dev/sda5分区有损坏 解决方法: ...
- 【Azure Developer】在微软云中国区,如何使用Microsoft GraphAPI连接到B2C Tenant
问题描述 如题所述,当在中国区使用Microsoft GraphAPI连接B2C Tenant时候,如何来设置中国区的Endpoint呢?在GitHub的示例中,并没有示例介绍如何连接中国区.如 问题 ...
- 11、mysql的SQL执行顺序
编写顺序 SELECT DISTINCT <select list> FROM <left_table> <join_type> JOIN <right_ta ...