WPF枚举绑定

此示例演示如何绑定到枚举。 遗憾的是,没有直接方法可以将枚举用作数据绑定源。 但是,Enum.GetValues(Type) 方法可返回值的集合。 这些值可以包装在 ObjectDataProvider 中并用作数据源。

ObjectDataProvider 类型提供了一种在 XAML 中创建对象并将其用作数据源的便捷方式。使用 ObjectDataProvider  类型包装枚举类型本身提供的枚举值数组。

        <ObjectDataProvider x:Key="DirectionEnumDataSource" ObjectType="{x:Type sys:Enum}" MethodName="GetValues"><ObjectDataProvider.MethodParameters><x:Type TypeName="local:DirectionType"></x:Type></ObjectDataProvider.MethodParameters></ObjectDataProvider>

在此示例中,ObjectDataProvider 使用三个属性来检索枚举:

属性描述
ObjectType数据提供程序要返回的对象类型。 在本示例中为 System.Enum。 sys: XAML 命名空间映射到 System
MethodName要在 System.Enum 类型上运行的方法的名称。 在本示例中为 Enum.GetValues。
MethodParameters要提供给 MethodName 方法的值的集合。 在此示例中,该方法采用枚举的 System.Type

实际上,XAML 正在分解方法调用、方法名称、参数和返回类型。 这里配置的ObjectDataProvider等效于一下代码:

var DirectionEnumDataSource = System.Enum.GetValues(typeof(EnumBinding.DirectionType));

引用ObjectDataProvider资源:

        <ListBox ItemsSource="{Binding Source={StaticResource DirectionEnumDataSource}}" SelectedIndex="0"/><ComboBox ItemsSource="{Binding Source={StaticResource DirectionEnumDataSource}}" SelectedIndex="0"/>

或通过代码的方式:

        <ListBox x:Name="MyListBox"></ListBox><ComboBox x:Name="MyComboBox"></ComboBox>
        MyListBox.ItemsSource = System.Enum.GetValues(typeof(DirectionType));MyComboBox.ItemsSource = System.Enum.GetValues(typeof(DirectionType));

完整测试代码:

MainWindow.xaml

<Window x:Class="EnumBinding.MainWindow"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"xmlns:local="clr-namespace:EnumBinding"xmlns:sys="clr-namespace:System;assembly=mscorlib"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Window.Resources><ObjectDataProvider x:Key="DirectionEnumDataSource" ObjectType="{x:Type sys:Enum}" MethodName="GetValues"><ObjectDataProvider.MethodParameters><x:Type TypeName="local:DirectionType"></x:Type></ObjectDataProvider.MethodParameters></ObjectDataProvider></Window.Resources><StackPanel><ListBox ItemsSource="{Binding Source={StaticResource DirectionEnumDataSource}}" SelectedIndex="0"/><ComboBox ItemsSource="{Binding Source={StaticResource DirectionEnumDataSource}}" SelectedIndex="0"/><ListBox x:Name="MyListBox"></ListBox><ComboBox x:Name="MyComboBox"></ComboBox></StackPanel>
</Window>

MainWindow.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace EnumBinding;public enum DirectionType : int
{Buy = 0,Sell = 1,
}public partial class MainWindow : Window
{public MainWindow(){InitializeComponent();MyListBox.ItemsSource = System.Enum.GetValues(typeof(DirectionType));MyComboBox.ItemsSource = System.Enum.GetValues(typeof(DirectionType));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/83243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】线程控制

文章目录 &#x1f4d6; 前言1. 线程的id1.1 pthread_self&#xff1a;1.2 线程独立栈结构&#xff1a;1.3 pthread_t究竟是什么&#xff1a;1.4 线程的局部存储&#xff1a; 2. 线程退出的三种方式2.2 - 1 方式一&#xff1a;pthread_cancel2.2 - 2 方式二&#xff1a;pthread…

Vue3封装知识点(三)依赖注入:project和inject详细介绍

Vue3封装知识点&#xff08;三&#xff09;依赖注入&#xff1a;project和inject详细介绍 文章目录 Vue3封装知识点&#xff08;三&#xff09;依赖注入&#xff1a;project和inject详细介绍一、project和inject是什么二、为了解决什么问题三、project和inject如何使用1.provid…

51单片机DS1302万年历时钟温度12864显示仿真( proteus仿真+程序+报告+讲解视频)

51单片机DS1302万年历时钟温度12864显示仿真 1.主要功能&#xff1a;2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单 51单片机DS1302万年历时钟温度12864显示仿真( proteus仿真程序报告讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 …

fastadmin 在操作里加订单详情弹窗

第一步找到控制器对应的js文件。 //添加一个详情按钮 buttons:[{name: detail,text: 详情,title: 详情,icon: fa fa-list,extend: data-area\["80%", "80%"]\,classname: btn btn-xs btn-primary btn-dialog,url: order/detail }], 在order控制器添加方法&…

Vue中一键批量注册全局组件

文件目录如下 1. component文件夹中编写所有的公共组件 注意&#xff1a;之后一键注册的全局组件名就是每个公共组件&#xff08;xxx.vue&#xff09;文件的文件名 xxx 2. plugins/components.js中批量注册组件 import Vue from "vue"let requireFile require.con…

vue3 element plus获取el-cascader级联选择器选中的当前结点的label值 附vue2获取当前label

各位大佬&#xff0c;有时我们在处理级联选择组件数据时&#xff0c;不仅需要拿到id,还需要拿到label名称&#xff0c;但是通常组件直接绑定的是id,所以就需要我们用别的方法去拿到label,此处官方是有这个方法的&#xff0c;具体根据不同的element 版本进行分别处理。 VUE3 e…

[NLP] LLM---<训练中文LLama2(二)>扩充LLama2词表构建中文tokenization

使用SentencePiece的除了从0开始训练大模型的土豪和大公司外&#xff0c;大部分应该都是使用其为当前开源的大模型扩充词表&#xff0c;比如为LLama扩充通用中文词表&#xff08;通用中文词表&#xff0c;或者 垂直领域词表&#xff09;。 LLaMA 原生tokenizer词表中仅包含少量…

企业架构LNMP学习笔记45

失效机制&#xff08;了解&#xff09; 1&#xff09;如果key过期了&#xff0c;value会及时删除么&#xff1f;空间会及时清理么&#xff1f; 2&#xff09;如果分配的存储空间&#xff0c;写满了&#xff0c;还允许写么&#xff1f; -m可以配置内存大小。 memcached 内部不…

SpringMVC中的自定义注解

目录 简介 注解&#xff08;Annotation&#xff09;在Java编程中的作用 SpringMVC中的自定义注解 Java注解是什么&#xff1f; 为什么在Java开发中注解变得如此重要&#xff1f; Java注解分类 1. 标准注解&#xff08;JDK基本注解&#xff09; 2. 自定义注解 JDK基本注…

项目基本搭建流程

一.分层 二.使用generator 来自动建立实体类dao 和dao接口,存放sql文件的xml&#xff1b;并复制到项目中&#xff08;路径可能可以直接设置&#xff09; 三. 配置文件&#xff1a;a。jdbc.properties &#xff1a;jdbc 链接数据库 1.url 2.username 3.password b。spring…

Ascend_PyTorch安装指北

Ascend_PyTorch安装指北 主要分为以下几步&#xff1a; 升级固件和驱动&#xff1b;安装CANN包toolkit&#xff1b;安装torch-1.11&#xff1b;安装apex&#xff1b;安装deepspeed&#xff1b; 升级固件和驱动 固件版本为&#xff1a;Ascend-hdk-910-npu-firmware_6.3.0.1.…

Cesium 地球(2)-瓦片创建

Cesium 地球(2)-瓦片创建 QuadtreePrimitive代码执行4个步骤: step1: update()step2: beginFrame()step3: render()step4: endFrame() 但并不是瓦片的创建步骤。 1、创建 QuadtreeTile 基于 step3: render() step3: render()┖ selectTilesForRendering()在 selectTilesFo…

laravel框架 - 安装初步使用学习 composer安装

一、什么是laravel框架 Laravel框架可以开发各种不同类型的项目&#xff0c;内容管理系统&#xff08;Content Management System&#xff0c;CMS&#xff09;是一种比较典型的项目&#xff0c;常见的网站类型&#xff08;如门户、新闻、博客、文章等&#xff09;都可以利用CM…

LLM系列 | 20 : Llama2 实战(下篇)-中文语料微调(附完整代码)

简介 紧接前文&#xff1a; 万字长文细说ChatGPT的前世今生Llama 2实战(上篇):本地部署(附代码) 上篇主要介绍Llama2的基本情况和基于官方模型实测Llama2在中英上的效果&#xff0c;包括单轮和多轮对话。今天这篇小作文作为Llama2的下篇&#xff0c;主要介绍如何用中文语料对…

Linux中软链接与硬链接的作用、区别、创建、删除

1、软链接与硬链接的作用 (1)软链接 软链接是Linux中常用的命令,它的功能是某一文件在另外一个位置建立一个同步的链接,相当于C语言中的指针,建立的链接直接指向源文件所在的地址,软链接不会另外占用资源,当同一文件需要在多个位置被用到的时候,就会使用到软连接。 …

Python解析MDX词典数据并保存到Excel

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 察纳雅言&#xff0c;深追先帝遗诏&#xff0c;臣不胜受恩感激。 原始数据和处理结果&#xff1a; https://gitcode.net/as604049322/blog_data/-/tree…

DBus笔记

包含2套总线&#xff1a;system bus&#xff0c;service bus&#xff0c;权限不同&#xff0c;system bus需要kernel或root权限dbus daemon进程提供服务&#xff0c; 有systemd启动dbus daemon&#xff0c;为system bus和service bus分别启动一个daemon。native object&#xf…

【Unity插件】实现多人在线游戏——Mirror插件的使用介绍

文章目录 前言导入Mirror插件 简单介绍一、RPC调用二、错误注意 基本使用一、创建场景的网络管理器二、创建一个玩家三、添加玩家初始生成位置四、玩家控制五、同步摄像机六、同步不同角色的名字和颜色修改七、同步动画八、同步子弹方法一方法二 九、聊天功能十、场景同步切换十…

新版kafka可视化界面组件

二、安装kafka可视化客户端工具&#xff08;kafka tool 2&#xff09; 1、下载安装 在官网中找到对应自己电脑系统的版本&#xff1a; kafka Tool2官网下载地址&#xff1a; Offset Explorer 这个方案是为Kafka依赖zookeeper提供的可视化解决方案。 前言 在早期使用kafka的…

Flask-flask中的后台分页查询实现

在后台查询数据并在前台展示的场景中&#xff0c;当数据量较大时&#xff0c;页面加载会非常缓慢&#xff0c;此时建议使用后台分页查询的形式。在flask中&#xff0c;基于Flask-SQLAlchemy可以使用以下方式实现。 方法一&#xff1a; Flask-SQLAlchemy 提供了一个 paginate(…