WPF中的转换器

单值转换器

1.创建项目后下载两个NuGet程序包

2.先定义一个转换器实现IValueConverter接口

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Data;namespace WPF练习14单值转换器.Converter
{public class BoolToVisibilityConverter : IValueConverter{// Convert负责把源数据类型转换成目标数据类型public object Convert(object value, Type targetType, object parameter, CultureInfo culture){bool oldType = (bool)value; // 源数据类型Visibility newType = oldType ? Visibility.Visible : Visibility.Collapsed; // 目标类型return newType;}// ConvertBack负责目标数据类型转换成源数据类型public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){throw new NotImplementedException();}}
}

3.在ViewModel文件夹中创建MainWindowViewModel

using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace WPF练习14单值转换器.ViewModel
{public class MainWindowViewModel : ObservableObject{private bool isShow=true;public bool IsShow{get => isShow;set => SetProperty(ref isShow, value);}public RelayCommand UpdateIsShowCommand{get{return new RelayCommand(() =>{IsShow = !IsShow;});}}}
}

4.把转换器当成一个资源导入到XAML文件中 并且将MainWindowViewModel导入DataContext上下文中

 

<Window x:Class="WPF练习14单值转换器.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:WPF练习14单值转换器"xmlns:c="clr-namespace:WPF练习14单值转换器.Converter"xmlns:vm="clr-namespace:WPF练习14单值转换器.ViewModel"mc:Ignorable="d"Title="MainWindow"Height="450"Width="800"><Window.DataContext><vm:MainWindowViewModel /></Window.DataContext><Window.Resources><c:BoolToVisibilityConverter x:Key="boolToVisibilityConverter" /></Window.Resources><Grid><WrapPanel Orientation="Vertical"><Button Width="100"Height="30"HorizontalAlignment="Left"Content="显示/隐藏"Visibility="{Binding IsShow, Converter={StaticResource boolToVisibilityConverter}}" /><Button Width="100"Height="30"HorizontalAlignment="Left"Command="{Binding UpdateIsShowCommand}"Content="修改IsShow" /></WrapPanel></Grid>
</Window>

多值转换器(结构同上)

ObjToArrConverter如下:

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;namespace WPF练习14单值转换器.Converter
{public class ObjToArrConverter : IMultiValueConverter{public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture){return values.ToArray();}public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture){throw new NotImplementedException();}}
}

MainWindowViewModel如下:

 

using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;namespace WPF练习14单值转换器.ViewModel
{public class MainWindowViewModel : ObservableObject{public RelayCommand<object[]> Command3{get{return new RelayCommand<object[]>((arr) =>{MessageBox.Show(arr[0].ToString());MessageBox.Show(arr[1].ToString());MessageBox.Show(arr[2].ToString());});}}}
}

 MainWindow.XAML如下:

<Window x:Class="WPF练习14单值转换器.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:WPF练习14单值转换器"xmlns:c="clr-namespace:WPF练习14单值转换器.Converter"xmlns:vm="clr-namespace:WPF练习14单值转换器.ViewModel"xmlns:i="http://schemas.microsoft.com/xaml/behaviors"mc:Ignorable="d"Title="MainWindow"Height="450"Width="800"><Window.DataContext><vm:MainWindowViewModel /></Window.DataContext><Window.Resources><c:ObjToArrConverter x:Key="objToArrConverter" /></Window.Resources><Grid><WrapPanel Orientation="Vertical"><TextBox x:Name="Id" /><TextBox x:Name="Name" /><TextBox x:Name="Status" /><TextBlock Width="150"Height="30"HorizontalAlignment="Left"Text="传递多个参数"><i:Interaction.Triggers><i:EventTrigger EventName="MouseLeftButtonUp"><i:InvokeCommandAction Command="{Binding Command3}"><i:InvokeCommandAction.CommandParameter><MultiBinding Converter="{StaticResource objToArrConverter}"><Binding ElementName="Id"Path="Text" /><Binding ElementName="Name"Path="Text" /><Binding ElementName="Status"Path="Text" /></MultiBinding></i:InvokeCommandAction.CommandParameter></i:InvokeCommandAction></i:EventTrigger></i:Interaction.Triggers></TextBlock></WrapPanel></Grid>
</Window>

 

 

 

 按钮传递多个参数和这个类似

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

GEE Ui——批量查询Sentinel-2 图像无云区域的可视化应用(提供缩略图)

目录 简介 功能选项 函数 Map.clear() No arguments. Returns: ui.Map Map.onClick(callback) Arguments: Returns: String reduceRegion(reducer, geometry, scale, crs, crsTransform, bestEffort, maxPixels, tileScale) Arguments: Returns: Dictionary toLis…

汇编练习-1

1、要求 练习要求引自《汇编语言-第4版》实验10.3(P209页) -编程&#xff0c;将data段中的数据&#xff0c;以10进制的形式显示出来 data segment dw 123,12666,1,8,3,38 data ends 2、实现代码(可惜没找到csdn对8086汇编显示方式) assume cs:codedata segmentdw 16 dup(0) ;除…

xml格式转为txt格式?

数据集的标签格式为xml格式&#xff0c;转为yolo的训练格式&#xff1a; 1.创建一个格式转化的.py文件将下面代码复制&#xff1a; import os import glob import xml.etree.ElementTree as ETdef get_classes(classes_path):with open(classes_path, encodingutf-8) as f:cl…

M - Weird Ceiling 【CCPC2024哈尔滨站】

M - Weird Ceiling 思路: 注意到 f ( n , i ) f(n,i) f(n,i) 的值为 n y ( i ) \frac{n} {y(i)} y(i)n​ &#xff0c;其中 y ( i ) y(i) y(i) 为 n n n 小于等于 i i i 的最大因数。 那么先找到 n n n的所有因数&#xff0c;包括 1 1 1和它本身&#xff0c;在数组a[]中升…

机器学习与数学公式

目录 在机器学习中&#xff0c;将公式应用到算法程序上主要涉及以下几个步骤&#xff1a; 1、数学公式转换成编程逻辑&#xff1a; 2、选择合适的编程语言和工具&#xff1a; 3、使用矩阵运算和优化方法&#xff1a; 4、实现算法逻辑&#xff1a; 5、将公式封装成函数…

基于微信小程序的校园失物招领系统的研究与实现(V4.0)

博主介绍&#xff1a;✌stormjun、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…

芯突破 | 国产PCIe桥接芯片掀起的连接革命

PCIe桥接芯片应运而生 随着计算机技术的快速发展&#xff0c;硬件性能不断提升&#xff0c;数据传输速度的需求日益增长&#xff0c;PCIe总线凭借其高带宽和低延迟的优势&#xff0c;已经成为主流。然而&#xff0c;由于不同设备和PCIe总线之间的接口差异&#xff0c;直接连接…

6款高效网页界面原型设计软件:提升设计效率的利器

在网页设计领域&#xff0c;原型设计是将创意转化为实际产品的关键环节。一款优秀的网页界面原型设计软件能够帮助设计师快速、准确地呈现设计思路&#xff0c;优化用户体验&#xff0c;并提高团队协作效率。以下是6款在网页界面原型设计方面表现出色的软件。 1. 即时设计 即…

计算机网络综合题

IP数据报的划分 CRC差错检测 冗余码的计算 因此&#xff0c;余数是1110&#xff0c;传输的数为11010110111110。在传输过程中最后两位变成o&#xff0c;接收端能够发现&#xff0c;因为11010110111110除以10011余数不为0。 子网划分 暴力求解法 &#xff08;定长子网划分大量…

对比JavaScript、C、Python在声明变量后未初始化处理上的差异与深度解析

文章目录 &#x1f4af;前言&#x1f4af;三者声明变量后未初始化的不同默认行为JavaScriptC语言Python &#x1f4af;JavaScript中的变量管理作用域与变量声明Hoisting&#xff08;变量提升&#xff09;var的思考与缺陷 &#x1f4af;C语言中的变量管理内存模型概述变量的作用…

Day105:代码审计-PHP原生开发篇SQL注入数据库监控正则搜索文件定位静态分析

Day105&#xff1a;代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析_php代码审计实战-CSDN博客 知识点&#xff1a; 1、PHP审计-原生态开发-SQL注入&语句监控 2、PHP审计-原生态开发-SQL注入&正则搜索 3、PHP审计-原生态…

零基础‘自外网到内网’渗透过程详细记录(cc123靶场)——上

一、网络环境示意图 二、环境搭建 首先将三个虚拟机使用VMware打开。 接下来对虚拟机进行配置。 首先配置虚拟机“护卫神主机大师(项目四)”。 点击编辑虚拟机设置。 发现存在两个网卡。 打开虚拟网络编辑器。 点击更改设置。 点击添加网络。 选择VM19后点击确定。 根据网络…

架构师必修之项目篇:基于ASR+GPT4.0+TTS实现全双工智能语音助手

1. 系统架构设计 1.1 ASR模块设计 ASR&#xff08;Automatic Speech Recognition&#xff09;模块是全双工智能语音助手的前端入口&#xff0c;负责将用户的语音输入转换为文本数据。该模块的设计关键在于高准确率的语音识别和快速响应。 语音信号预处理&#xff1a;首先对采集…

为什么说PPQ对于FPGA的神经网络的量化来说是神?

这几天踩了无数坑把PPQ走通了&#xff0c;把自己搭的一个网络实现了完美量化&#xff0c;测试结果也可以正常分类。看到结果终于明白为什么说PPQ对于FPGA的神经网络的量化来说是神了 虔诚地放出链接&#xff1a; OpenPPL/ppq PS&#xff1a;这辈子要是能去商汤就好了…… 一、 …

VMWareTools安装及文件无法拖拽解决方案

文章目录 1 安装VMWare Tools2 安装vmware tools之后还是无法拖拽文件解决方案2.1 确认vmware tools安装2.2 客户机隔离2.3 修改自定义配置文件2.4 安装open-vm-tools-desktop软件 1 安装VMWare Tools 打开虚拟机VMware Workstation&#xff0c;启动Ubuntu系统&#xff0c;菜单…

【TabBar嵌套Navigation案例-常见问题按钮-WebView-加载本地html文件 Objective-C语言】

一、接下来,我们来说,webView如何加载本地的html文件 1.把这里的http://www.baidu.com/ 如何替换成本地的html文件,实际上,我们只需要把URL替换一下就可以了, 然后呢,先给大家看一眼素材,在我们的help.json里边,比如说,第一个按钮, 如何领奖,这块儿有一个叫做htm…

pwn:[NISACTF 2022]ReorPwn?

题目 解题 附件下载 在kali里打开 执行checksec命令&#xff0c;查看控制程序的命令 64位 用ida64位版本打开 打开页面显示如下 发现关键函数system() 双击system(a) 显示如下 需要知道command是怎么传入的 通过原始的数据可以知道 gets函数获取参数a&#xff0c;即用户输入…

诗林工作室(编号:mb0005)分享:HTML模版Paxton,一款自适应响应式图集、博客设计开发模板

这是来自国外一款HTML网页模板&#xff0c;适合Web开发人员做前端站点设计参考使用。全站模版倾向于图集、博客等多行业的平台模版开发。此模版适合各大CMS的主题模版开发参考&#xff0c;如常见的Wordpress主题开发、Z-Blog模板开发、Typecho模板开发、DiscuzX模板开发、Jooml…

JavaScript缓存之Service Worker workbox

目录 先来看看基础Service Worker 注册阶段 安装和激活 workbox workbox-webpack-plugin 来看看结果 这次再做组件的库模式打包之后想着优化js加载&#xff0c;于是想到了大家用的并不是很多的Service Worker技术&#xff0c;这个技术类似于原生的离线包能力 先来看看基…

Html编写发射粒子爱心

下载html文件&#xff1a;https://download.csdn.net/download/m0_58419490/89963280 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><title>&#x1f497;</title>…