当前位置: 首页 > news >正文

WPF中Converter基础用法

IValueConverter

1.创建一个类集成接口IValueConverter,并实现

2在xaml中引入

举例

image-20250626172015686

性别用int来表示,1为男2为女

核心代码

创建GenderConverter继承IValueConverter

public class GenderConverter : IValueConverter
{//model->view转换public object Convert(object value, Type targetType, object parameter, CultureInfo culture){if (value == null || parameter == null)return false;return value.ToString() == parameter.ToString();//throw new NotImplementedException();}//view->model转换public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){//throw new NotImplementedException();return parameter;}}

ViewModel中定义属性

public int Gender { get; set; }

xaml中引入

xmlns:convert="clr-namespace:TestConvert.Converter"
<Window.Resources><convert:GenderConverter x:Key="genderConverter" />
</Window.Resources>

xaml中IsChecked绑定Gender

<StackPanel Grid.Row="1" Orientation="Horizontal"><TextBlock Margin="10,0" Text="性别:" /><RadioButton Margin="0,0,10,0" Content="男" IsChecked="{Binding Gender, Converter={StaticResource genderConverter}, ConverterParameter=1}" /><RadioButton Content="女" IsChecked="{Binding Gender, Converter={StaticResource genderConverter}, ConverterParameter=2}" />
</StackPanel>

IMultiValueConverter

1.创建一个类集成接口IMultiValueConverter,并实现

2在xaml中引入

举例

image-20250626172732803

image-20250626172749906

只有当下拉框一个为A一个为B才会显示绿色,其他都为红色

核心代码

通过多帮获取两个对象的数据,在ComboBoxConverter中进行验证

public class ComboBoxConverter : IMultiValueConverter
{public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture){if (values[0].ToString() == "A"&& values[1].ToString() == "B"){return Brushes.Green;}else{return Brushes.Red;}}public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture){throw new NotImplementedException();}
}

xaml中引入Converter资源

xmlns:convert="clr-namespace:TestConvert.Converter"
<Window.Resources><convert:ComboBoxConverter x:Key="comboBoxConverter" 
</Window.Resources>

xaml中引入ComboBoxConverter

<StackPanel Grid.Row="2" Orientation="Horizontal"><ComboBoxName="cb_001"Width="60"Height="25"Margin="0,30,0,0"HorizontalAlignment="Center"VerticalAlignment="Center"><ComboBoxItem Content="A" /><ComboBoxItem Content="B" /><ComboBoxItem Content="C" /></ComboBox><ComboBoxName="cb_002"Width="60"Height="25"Margin="0,10,0,0"HorizontalAlignment="Center"VerticalAlignment="Center"><ComboBoxItem Content="A" /><ComboBoxItem Content="B" /><ComboBoxItem Content="C" /></ComboBox><TextBlock Margin="0,20,0,0" HorizontalAlignment="Center" Text="Hello World!"><TextBlock.Foreground><MultiBinding Converter="{StaticResource comboBoxConverter}"><Binding Path="Text" ElementName="cb_001" /><Binding Path="Text" ElementName="cb_002" /></MultiBinding></TextBlock.Foreground></TextBlock>
</StackPanel>
http://www.lqws.cn/news/529417.html

相关文章:

  • 正则表达式,`[]`(字符类)和`|`(或操作符)
  • MFC制作动态波形图( ChartCtrl)
  • 【AI News | 20250626】每日AI进展
  • ​​Deepoc大模型在光电研发中的核心技术突破与应用​
  • 使用CSS泄露标签属性值 url路径遍历攻击 -- GPN CTF 2025 PAINting Dice
  • CSS 背景属性用于定义HTML元素的背景
  • 构思的股票交易模拟 3D 虚拟主题游戏《股海逐梦 3D》
  • c++17标准std::filesystem常用函数
  • HDFS(Hadoop分布式文件系统)总结
  • 面试破局:告别流水账,用“故事思维”重塑自我介绍
  • 【RESTful接口设计规范全解析】URL路径设计 + 动词名词区分 + 状态码 + 返回值结构 + 最佳实践 + 新手常见误区汇总
  • Word 中批量转换 LaTeX 公式为标准数学格式的终极方法(附宏设置教程)
  • 高弹性、高可靠!腾讯云 TDMQ RabbitMQ Serverless 版全新发布
  • DOA-BiLSTM+NSGAII+熵权TOPSIS,附气泡图!,梦境优化算法+深度学习+多目标优化+多属性决策!
  • Java底层原理:深入理解JVM性能调优与监控
  • Java设计模式->责任链模式的介绍
  • 什么是 MQTT?
  • Nordic nRF52832 寄存器级 UARTE 发送实现
  • Android-Layout Inspector使用手册
  • R语言机器学习算法实战系列(二十六)基于tidymodels的XGBoost二分类器全流程实战
  • ubuntu22.04系统kubeadm部署k8s高可用集群
  • 手机屏像素缺陷修复及相关液晶线路激光修复原理
  • 简单使用python
  • Milvus 资源调度系统的核心部分:「查询节点」「资源组」「数据库」
  • gitlab https链接转为ssh链接
  • Docker 网络——AI教你学Docker
  • Vue 2 项目中内嵌 md 文件
  • Windows 下使用 nvm 管理 Node.js 多版本 —— 完整指南
  • 动态规划之01背包问题
  • 互联网医院系统源码解析:如何实现视频问诊、电子处方等核心功能?