示例:WPF中应用MarkupExtention自定义IValueConverter

一、目的:应用MarkupExtention定义IValueConverter,使得应用起来更简单和高效


二、实现

public abstract class MarkupValueConverterBase : MarkupExtension, IValueConverter{public abstract object Convert(object value, Type targetType, object parameter, CultureInfo culture);public virtual object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture){throw new NotImplementedException();}public override object ProvideValue(IServiceProvider serviceProvider){return this;}}

三、环境


VS2022,.Net 7

四、示例

自定义一个DateTime时间转换年龄的转化器

    public class GetAgeConverter : MarkupValueConverterBase{public override object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture){if (value is DateTime dateTime){DateTime now = DateTime.Now;int age = now.Year - dateTime.Year;if (now.Month < dateTime.Month || (now.Month == dateTime.Month && now.Day < dateTime.Day)){age--;}return age > 0 ? age : 0;}return this.DefaultValue;}}

使用方法

            <TextBlock Text="{Binding Source={x:Static s:DateTime.MinValue},Converter={local:GetAgeConverter DefaultValue=50}}"/>

 输出结果

五、需要了解的知识点

IValueConverter 接口 (System.Windows.Data) | Microsoft Learn

MarkupExtension 类 (System.Windows.Markup) | Microsoft Learn

六、源码地址

GitHub - HeBianGu/WPF-ControlDemo: 示例

GitHub - HeBianGu/WPF-ControlBase: Wpf封装的自定义控件资源库

GitHub - HeBianGu/WPF-Control: WPF轻量控件和皮肤库

七、了解更多

System.Windows.Controls 命名空间 | Microsoft Learn

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

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

相关文章

数字化转型对企业有什么价值?

数字化转型对企业有什么价值&#xff1f; 1. 信息共享 很多业务设计和管理规划&#xff0c;通常需要综合多个业务部门和业务专题的数据。 如果企业的数据和信息在位置分布上非常分散&#xff0c;就很难充分利用企业积累的数据资源&#xff0c;并将其用于有效的管理决策和业务…

零基础直接上手java跨平台桌面程序,使用javafx(七)用户操作界面探讨,这个系列结束

GUI&#xff0c;我们还是喜欢web。如果javafx有像wpf的WebView2差不多的功能&#xff0c;我们就开心了scene builder中拖出一个webview&#xff0c;然后再回到代码中。发现<?import javafx.scene.web.*?>是红色的&#xff0c;我们缺少配置。于是在pom.xml中添加JavaFX依…

Nodejs 第七十七章(MQ高级)

MQ介绍和基本使用在75章介绍过了&#xff0c;不再重复 MQ高级用法-延时消息 什么是延时消息? Producer 将消息发送到 MQ 服务端&#xff0c;但并不期望这条消息立马投递&#xff0c;而是延迟一定时间后才投递到 Consumer 进行消费&#xff0c;该消息即延时消息 插件安装 R…

[C++] 从零实现一个ping服务

&#x1f4bb;文章目录 前言ICMP概念报文格式 Ping服务实现系统调用函数具体实现运行测试 总结 前言 ping命令&#xff0c;因为其简单、易用等特点&#xff0c;几乎所有的操作系统都内置了一个ping命令。如果你是一名C初学者&#xff0c;对网络编程、系统编程有所了解&#xff…

学会python——读取大文本文件(python实例六)

目录 1、认识Python 2、环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3、读取大文本文件 3.1 代码构思 3.2 代码示例 3.3 运行结果 4、总结 1、认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强…

电脑内存怎么看?5个秘诀,轻松查看内存!

“新买了一台电脑&#xff0c;想查看一下我电脑的内存&#xff0c;大家可以分享一下查看方法吗&#xff1f;” 当我们谈论电脑的性能时&#xff0c;内存无疑是一个不容忽视的关键组件。然而&#xff0c;对于许多普通用户来说&#xff0c;如何查看电脑内存的大小、类型以及使用情…

跳舞电动机器人单片机方案

这款机器人形状智能电子玩具是一款集娱乐、教育和互动于一身的高科技产品。它的主要功能包括&#xff1a; 1、智能对话&#xff1a;机器人可以进行简单的对话&#xff0c;回答用户的问题&#xff0c;提供有趣的互动体验。 2、前进、后退、左转、右转、滑行&#xff1a;机器人…

BERT报错记录

一、加载数据集下载失败 报错&#xff1a; TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应&#xff0c;连接尝试失败。urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x00000241F9AD4…

Element UI 一键校验多表单(v-for循环表单,异步校验规则,v-for 中的 ref 属性,避坑 forEach 不支持异步 await )

需求描述 表单为数组 v-for 循环得到的多表单&#xff0c;如可自由增删的动态表单表单中存在异步校验规则&#xff0c;如姓名需访问接口校验是否已存在点击提交按钮&#xff0c;需一键校验所有表单&#xff0c;仅当所有表单都通过校验&#xff0c;才能最终提交到后台 效果预览 …

亚马逊新店如何实现高效流量转化?自养号测评深度解析与实用策略

在亚马逊平台上&#xff0c;自养号测评是一种通过卖家自行控制的海外买家账号对商品进行评价的方法&#xff0c;旨在提高商品的排名和流量。 亚马逊的自养号测评是指卖家通过使用在海外真实环境注册的买家账号&#xff0c;代替真实买家对商品进行测评。账号由卖家自己管理&…

电子传真怎么在国产系统上使用?一文看懂网络传真信创方案

国产化浪潮正在逐步深入&#xff0c;越来越多的企业开始关注如何在国产系统上高效、安全地使用办公软件&#xff0c;电子传真系统也不例外。 作为网络电子传真领域的重要品牌&#xff0c;EastFax也对原Windows电子传真系统进行了信创改造&#xff0c;全面支持国产化操作系统、…

串扰(一)

一、说明 串扰应该算比较常见的信号完整性问题了&#xff0c;一般是指由于走线较近&#xff0c;传输信号时在临线上产生耦合噪声的现象。串扰的原因是由于电场和磁场的耦合&#xff0c;我们经常用耦合电容和耦合电感模型进行问题分析。 本文是基于被攻击线阻抗匹配的情形下计…

Vatee万腾平台,让智能更懂你

在数字化浪潮席卷全球的今天&#xff0c;智能科技已经渗透到我们生活的方方面面。然而&#xff0c;真正的智能不仅仅是技术的堆砌&#xff0c;更是对人性需求的深刻理解和满足。Vatee万腾平台&#xff0c;正是这样一个让智能更懂你的平台&#xff0c;它以其独特的方式&#xff…

PyCharm配置教程,手把手教你如何配置

文章目录 引言1. 安装 PyCharm1.1 下载和安装1.2 初次启动 2. 基本配置2.1 设置界面2.2 常用配置项 3. 项目配置3.1 创建新项目3.2 配置解释器 4. 虚拟环境配置4.1 创建虚拟环境4.2 使用已有虚拟环境4.3 管理依赖 5. 插件和扩展5.1 安装插件5.2 推荐插件 6. 调试配置6.1 配置调…

【计算机毕业设计】234基于微信小程序的中国各地美食推荐平台

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

可穿戴设备:苹果“吃老底”、华为“忙复苏”、小米“再扩容”

配图来自Canva可画 随着产品功能的创新&#xff0c;可穿戴设备不再被简单地视为手机的延伸&#xff0c;而是被当成一种独立的、具有独特功能和优势的产品&#xff0c;受到了越来越多人的青睐。 一方面&#xff0c;技术的进步使得可穿戴设备在功能、性能和使用体验上得到显著提…

Golang | Leetcode Golang题解之第160题相交链表

题目&#xff1a; 题解&#xff1a; func getIntersectionNode(headA, headB *ListNode) *ListNode {if headA nil || headB nil {return nil}pa, pb : headA, headBfor pa ! pb {if pa nil {pa headB} else {pa pa.Next}if pb nil {pb headA} else {pb pb.Next}}retu…

IDEA快速入门03-代码头统一配置

三、代码规范配置 3.1 文件头和作者信息 配置入口&#xff1a;依次打开 File -> Settings -> Editor -> File and Code Templates。 Class /*** Copyright (C) 2020-${YEAR}, Glodon Digital Supplier & Purchaser BU.* * All Rights Reserved.*/ #if (${PACKA…

pdf只要其中一页,pdf只要其中几页怎么弄

在现代办公和学习环境中&#xff0c;pdf文件因其跨平台、保持原样等优点而被广泛使用。然而&#xff0c;有时我们需要一个pdf其中页或其中几页&#xff0c;以便更好地管理和使用其中的内容。本文将详细介绍几种拆分pdf文件的方法&#xff0c;帮助您轻松应对各种拆分需求。 打开…

开源项目推荐

这个资源列表集合了.NET开发领域的优秀工具、库、框架和软件等&#xff0c; 如果您目前研究开源大模型项目&#xff0c;请参考热门开源大模型项目推荐链接如下&#xff1a;https://blog.csdn.net/hefeng_aspnet/article/details/139669116 欢迎各位小伙伴收藏、点赞、留言、评论…