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

WPF技巧-常用的Converter集合(更新ing)

文章目录

    • @[toc]
    • 🧩 示例 1:`BooleanToVisibilityConverter`
    • 🧩 示例 2:`InvertedBooleanToVisibilityConverter`
    • 🧩 示例 3:`StringToColorConverter`
    • 🧩 示例 4:`StringToBrushConverter`
    • 🧩 示例 5:`NullToVisibilityConverter`
    • 🧩 示例 6:`EnumToVisibilityConverter`
    • 🧩 示例 7:`DoubleToOpacityConverter`
    • ✅ 注册与使用方式(XAML)
      • 1. 在资源中注册:
      • 2. 在绑定中使用:

🧩 示例 1:BooleanToVisibilityConverter

将布尔值转换为 Visibility(如 true => Visible, false => Collapsed

public class BooleanToVisibilityConverter : IValueConverter
{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){if (value is bool booleanValue)return booleanValue ? Visibility.Visible : Visibility.Collapsed;return Visibility.Collapsed;}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){if (value is Visibility visibility)return visibility == Visibility.Visible;return false;}
}

🧩 示例 2:InvertedBooleanToVisibilityConverter

反向布尔转可见性(true => Collapsed, false => Visible

public class InvertedBooleanToVisibilityConverter : IValueConverter
{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){if (value is bool booleanValue)return !booleanValue ? Visibility.Visible : Visibility.Collapsed;return Visibility.Visible;}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){if (value is Visibility visibility)return visibility != Visibility.Visible;return true;}
}

🧩 示例 3:StringToColorConverter

将字符串转换为 Color(支持 Hex、Named 等格式)

public class StringToColorConverter : IValueConverter
{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){if (value is string colorStr){try{return (Color)ColorConverter.ConvertFromString(colorStr);}catch { }}return Colors.Transparent;}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){if (value is Color color)return color.ToString();return string.Empty;}
}

🧩 示例 4:StringToBrushConverter

将字符串转换为 Brush(支持 Hex、Named)

public class StringToBrushConverter : IValueConverter
{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){if (value is string brushStr){try{return new SolidColorBrush((Color)ColorConverter.ConvertFromString(brushStr));}catch { }}return Brushes.Transparent;}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){if (value is SolidColorBrush brush)return brush.Color.ToString();return string.Empty;}
}

🧩 示例 5:NullToVisibilityConverter

将 null 或空对象转换为 Visibility(非空显示,为空隐藏)

public class NullToVisibilityConverter : IValueConverter
{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){return value == null || value is string str && string.IsNullOrEmpty(str)? Visibility.Collapsed: Visibility.Visible;}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){throw new NotImplementedException();}
}

🧩 示例 6:EnumToVisibilityConverter

根据枚举值是否匹配某个参数来决定是否显示

public class EnumToVisibilityConverter : IValueConverter
{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){if (value == null || parameter == null)return Visibility.Collapsed;return value.ToString() == parameter.ToString()? Visibility.Visible: Visibility.Collapsed;}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){if (value is Visibility visible && visible == Visibility.Visible && parameter != null)return parameter;return Binding.DoNothing;}
}

XAML 使用:

<TextBlock Text="Only shown when Status is Active"Visibility="{Binding Status, Converter={StaticResource EnumToVisibilityConverter}, ConverterParameter=Active}" />

🧩 示例 7:DoubleToOpacityConverter

将数值映射为透明度(0.0 - 1.0)

public class DoubleToOpacityConverter : IValueConverter
{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){if (value is double opacity)return opacity >= 0 && opacity <= 1 ? opacity : 1.0;return 1.0;}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){if (value is double opacity)return opacity;return 1.0;}
}

✅ 注册与使用方式(XAML)

1. 在资源中注册:

<Window.Resources><converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /><converters:StringToBrushConverter x:Key="StringToBrushConverter" /><!-- 其他转换器 -->
</Window.Resources>

2. 在绑定中使用:

<Button Content="Toggle" Visibility="{Binding IsEnabled, Converter={StaticResource BooleanToVisibilityConverter}}" /><TextBlock Text="Colored Text"Foreground="{Binding TextColor, Converter={StaticResource StringToBrushConverter}}" />
http://www.xdnf.cn/news/7450.html

相关文章:

  • Spring Boot-Swagger离线文档(插件方式)
  • 【Redis】跳表结构
  • LSTM语言模型验证代码
  • springboot框架 集成海康ISUP-SDK 并实现 协议透传给设备下发指令!
  • 【鸿蒙开发】安全
  • centos 9 Kickstart + Ansible自动化部署 —— 筑梦之路
  • 软考软件评测师——数据库系统应用
  • spark-shuffle 类型及其对比
  • 新兴技术与安全挑战
  • Android7 Input(八)App Input事件接收器InputEventReceiver
  • 接口自动化可视化展示
  • CQF预备知识:Python相关库 —— 什么是 NumPy?
  • Linux网络基础全面解析:从协议分层到局域网通信原理
  • 【原创】ubuntu22.04下载编译AOSP 15
  • 杰里7006d日志分析
  • React 第四十四节Router中 usefetcher的使用详解及注意事项
  • form-create-designer中$inject参数的数据结构及各项属性说明
  • 软考中级软件设计师——计算机网络 IP地址与子网掩码相关题型
  • Index-AniSora模型论文速读:基于人工反馈的动漫视频生成
  • 游戏引擎学习第299天:改进排序键 第二部分
  • 小白的进阶之路系列之二----人工智能从初步到精通pytorch中分类神经网络问题详解
  • Linux 的 TCP 网络编程 -- 回显服务器,翻译服务器
  • Pandas:Series和DataFrame的概念、常用属性和方法
  • Wan2.1 文生视频 支持批量生成、参数化配置和多语言提示词管理
  • matlab慕课学习3.5
  • 《决策科学与艺术》No1: 决策树:概念、原理、发展历史、特点及应用
  • 打造高效数据处理利器:用Python实现Excel文件智能合并工具
  • ETL 数据集成与大数据技术的深度剖析
  • 【[特殊字符] Vue 3 实现动态加载子组件并缓存状态完整指南】
  • HTTP/HTTPS与SOCKS5协议在隧道代理中的兼容性设计解析