WPF ObjectDataProvider学习(一)
时间:2021-07-27
本文章向大家介绍WPF ObjectDataProvider学习(一),主要包括WPF ObjectDataProvider学习(一)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.data.objectdataprovider?view=net-5.0
ObjectDataProvider 提供了一种简便的方法,可在 XAML 中创建对象并将对象用作绑定源对象,但不会替换现有的数据模型
使用 ObjectDataProvider
准备一个枚举类
1 public enum EWeekDay 2 { 3 星期一, 4 5 星期二, 6 7 星期三, 8 9 星期四, 10 11 星期五, 12 13 星期六, 14 15 星期天, 16 }
准备一个颜色转换器
1 public class Converter : IValueConverter 2 { 3 public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 4 { 5 PropertyInfo propertyInfo = (PropertyInfo)value;//从这里也可以看出 ObjectDataProvider就是使用的反射机制 6 var str = propertyInfo.GetValue(value).ToString(); 7 var color = (Color)ColorConverter.ConvertFromString(str); 8 var brush = new SolidColorBrush(color); 9 return brush; 10 } 11 12 public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 13 { 14 throw new NotImplementedException(); 15 } 16 }
界面
1 <Window 2 x:Class="ObjectDataProvider绑定到方法.MainWindow" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 6 xmlns:local="clr-namespace:ObjectDataProvider绑定到方法" 7 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 8 Title="MainWindow" 9 Width="800" 10 Height="450" 11 FontSize="20" 12 mc:Ignorable="d"> 13 <Window.Resources> 14 <ObjectDataProvider 15 x:Key="Provider" 16 MethodName="GetProperties" 17 ObjectInstance="{x:Type Colors}" /> 18 <!-- ObjectInstance和ObjectType只能使用一种 ObjectInstance有点像反射 --> 19 20 <ObjectDataProvider 21 x:Key="EnumProvider" 22 MethodName="GetEnumValues" 23 ObjectInstance="{x:Type local:EWeekDay}" /> 24 <!-- 颜色转换器 --> 25 <local:Converter x:Key="Converter" /> 26 </Window.Resources> 27 <Grid> 28 <Grid.ColumnDefinitions> 29 <ColumnDefinition Width="1*" /> 30 <ColumnDefinition Width="1*" /> 31 </Grid.ColumnDefinitions> 32 33 <ListView Grid.Column="0" ItemsSource="{Binding Source={StaticResource Provider}}"> 34 <ListView.ItemTemplate> 35 <DataTemplate> 36 <StackPanel Orientation="Horizontal"> 37 <TextBlock Background="{Binding Converter={StaticResource Converter}}" Text="{Binding Name}" /> 38 </StackPanel> 39 </DataTemplate> 40 </ListView.ItemTemplate> 41 </ListView> 42 <ListView Grid.Column="1" ItemsSource="{Binding Source={StaticResource EnumProvider}}" /> 43 </Grid> 44 </Window>
运行结果
原文地址:https://www.cnblogs.com/AtTheMoment/p/15065650.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 关于fixture.debugElement.query(By.css)这个方法的一个疑问
- codeforces 1334C(前缀和)
- Angular通过依赖注入机制注入一个对象的例子
- 简易数据分析(七):Web Scraper 抓取表格、分页器翻页数据
- codeforces 1327C(构造)
- zabbix分布式及高可用
- Angular单元测试的spyOn使用一例
- SQL-JOIN全解析
- Node.js上传单文件和多文件的一些示例博客和源代码
- ES6中的箭头函数=>
- 22 个让 React 开发更高效更有趣的工具
- JavaScript中==和===的区别
- 解决:打包SpringBoot项目成jar包后,其他的项目无法引入jar包中的对象
- 【分享】MPSoC R5引导4个A53和两个R5的应用程序的例子
- 【分享】MPSoC交叉编译例子