首页 > 其他分享 >WPF 装饰器 、 转换器

WPF 装饰器 、 转换器

时间:2023-12-20 15:00:50浏览次数:35  
标签:Convert object System public values 转换器 WPF 装饰

十年河东,十年河西,莫欺少年穷

学无止境,精益求精

装饰器参考:https://www.cnblogs.com/xietianjiao/p/11239558.html

 wpf 转换器

详情参考:https://www.cnblogs.com/zh7791/p/9311332.html

单值转换器需继承自 IValueConverter

    public class MyNumberConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if(value!=null&& System.Convert.ToInt32(value) % 2 == 0)
            {
                return "偶数";
            }
            return "奇数";
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

多值转换器需继承自IMultiValueConverter

    public class MyColorConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            if (values != null && values.Length > 2)
            {
                var R = System.Convert.ToByte(values[0]);
                var G = System.Convert.ToByte(values[1]);
                var B = System.Convert.ToByte(values[2]);
                System.Windows.Media.Color color = System.Windows.Media.Color.FromRgb(R,G,B);
                 return new SolidColorBrush(color);
            }
            return null;
        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

使用转换器

xaml 如下:

<Window x:Class="WpfApp9.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:MyConverter="clr-namespace:WpfApp9.Converter"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="600">
    <Window.Resources>
        <MyConverter:MyNumberConverter x:Key="MyNumber"/>
        <MyConverter:MyColorConverter x:Key="MyColor"/>
         
    </Window.Resources>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <StackPanel Grid.Column="0">
            <TextBox x:Name="txt" Text="0" Width="100" Height="40" FontFamily="50"/>
            <TextBlock Text="{Binding ElementName=txt,Path=Text,Converter={StaticResource MyNumber}}" FontSize="50" />
        </StackPanel>

        <StackPanel Grid.Column="1">
            <Slider x:Name="Rcolor" Maximum="255" Minimum="0" Value="0" Width="200" Margin="10"/>
            <Slider x:Name="Gcolor" Maximum="255" Minimum="0" Value="0" Width="200" Margin="10"/>
            <Slider x:Name="Bcolor" Maximum="255" Minimum="0" Value="0" Width="200" Margin="10"/>
            <Path VerticalAlignment="Center"   Stroke="Black"  StrokeThickness="3">
                <Path.Data>
                    <EllipseGeometry Center="80,80" RadiusX="60" RadiusY="60"/>
                </Path.Data>
                <Path.Fill>
                    <MultiBinding Converter="{StaticResource MyColor}">
                        <Binding ElementName="Rcolor" Path="Value"></Binding>
                        <Binding ElementName="Gcolor" Path="Value"></Binding>
                        <Binding ElementName="Bcolor" Path="Value"></Binding>
                    </MultiBinding>
                </Path.Fill>
            </Path>
        </StackPanel>
    </Grid>
</Window>
View Code

效果:

 注:需要在资源中引入定义的转换器

    <Window.Resources>
        <MyConverter:MyNumberConverter x:Key="MyNumber"/>
        <MyConverter:MyColorConverter x:Key="MyColor"/>
         
    </Window.Resources>

使用如下:

<TextBlock Text="{Binding ElementName=txt,Path=Text,Converter={StaticResource MyNumber}}" FontSize="50" />

 

标签:Convert,object,System,public,values,转换器,WPF,装饰
From: https://www.cnblogs.com/chenwolong/p/17916547.html

相关文章

  • [WPF]动手写一个简单的消息对话框
    消息对话框是UI界面中不可或缺的组成部分,用于给用户一些提示,警告或者询问的窗口。在WPF中,消息对话框是系统原生(user32.dll)的MessageBox,无法通过Style或者Template来修改消息对话框的外观。因此,当需要一个与应用程序主题风格一致的消息对话框时,只能自己动手造轮子了。确定“轮子......
  • 异步记录第三方接口调用日志的优雅实现(HttpClient+装饰者模式+异步线程池)
    对于第三方接口调用日志这个功能,笔者在工作中曾见过以下两种方式:Restemplate+装饰者模式+MQ实现网关监控+Feign拦截器+观察者模式实现其中观察者模式的实现是我最为佩服的设计,个人认为以上两种实现都显得略过臃肿,应该简化设计,让异步记录的实现更加简洁优雅,因此产生了这样......
  • WPF使用SVG
    使用svg创建path<Window.Resources><Geometryx:Key="Icon-Close">M512.72533385.12c235.3920426.538667191.146667426.538667426.581333s-191.146667426.581333-426.538667426.581334c-235.4346670-426.581333-191.146667-426.581......
  • 界面控件DevExpress WPF Dock组件,轻松创建类Visual Studio窗口界面!
    本文主要为大家介绍DevExpressWPF控件中的Dock组件,它能帮助用户轻松创还能受MicrosoftVisualStudio启发的Dock窗口界面。P.S:DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用......
  • Wpf应用Path路径绘制圆弧
    [原]Wpf应用Path路径绘制圆弧 1. 移动指令:MoveCommand(M):M起始点 或者:m起始点比如:M100,240或m100,240使用大写M时,表示绝对值;使用小写m时;表示相对于前一点的值,如果前一点没有指定,则使用(0,0)。2. 绘制指令(DrawCommand):我们可以绘制以下形状:(1)直线:Line(L)(2)......
  • Python装饰器:深入探索功能增强的神奇工具(特点+应用+举例)
    Python装饰器是一项强大的特性,它允许程序员在不改变函数或类本身的情况下,增加、扩展或修改它们的行为。从日志记录到权限验证,再到性能分析和缓存,装饰器在Python编程中发挥着重要的作用。本文将深入探讨装饰器的各个方面,从基本概念到实际应用,带您领略装饰器的神奇之处。装饰器是Pyth......
  • 汉源高科30路32路电话光端机 PCM语音电话光纤收发器 光电转换器
    32路电话光端机HY-32P是汉源高科(北京)科技有限公司采用自主知识产权的大规模集成电路,应用时分复用技术,将以太网信号和电话信号混合编码后在一对光纤上传输。实现热线电话业务传输,传输通道为光传输通道。该机采用1U机架式设计,集成度高,体积小,功耗低,工作可靠,安装使用方便。主要功能与特......
  • Python 以类作为装饰器 几种使用场景
    1.原函数、装饰器都没有参数代码:classTest:def__init__(self,func):print('Bein__init__process...')self.__func=funcdef__call__(self):print("...Startdecorate...")self.__func()prin......
  • ATM坤坤机装饰器版
    【一】需求#ATM:提款姬#defsave_data(file_path,)#user_pwd_dict={}#文本:dream-521#dream,521#user_info.txt:每一个人的信息就是一行#dream_flow.txt:#print(time.localtime())#注册:存储到文件中用户名-登录密码-年龄-银行卡号(1314)-......
  • 汉源高科2路电话光端机SC接口 PCM语音电话光纤收发器 光电转换器
    2路电话光端机HY-2P是汉源高科(北京)科技有限公司采用自主知识产权的大规模集成电路,应用时分复用技术,将以太网信号和电话信号混合编码后在一对光纤上传输。实现热线电话业务传输,传输通道为光传输通道。该机采用桌面式设计,集成度高,体积小,功耗低,工作可靠,安装使用方便。主要功能与特点1:......