zoukankan      html  css  js  c++  java
  • WPF使用转换器(Converter)

    1.作用:可以将源数据和目标数据之间进行特定的转化,

    2.定义转换器,需要继承接口IValueConverter

        [ValueConversion(typeof(int), typeof(string))]
        public class ForeColorConverter : IValueConverter
        {
            //源属性传给目标属性时,调用此方法ConvertBack
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                int c = System.Convert.ToInt32(parameter);
    
                if (value == null)
                    throw new ArgumentNullException("value can not be null");
    
                int index = System.Convert.ToInt32(value);
                if (index == 0)
                    return "Blue";
                else if (index == 1)
                    return "Red";
                else
                    return "Green";
            }
    
            //目标属性传给源属性时,调用此方法ConvertBack
            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            {
                return null;
            }
        } 


    public ValueConversionAttribute(Type sourceType, Type targetType):指定源属性类型和目标属性类型

    Convert:会进行源属性传给目标属性的特定转化

    ConvertBack:会进行目标属性传给源属性的特定转化

    参数parameter:对应Binding的ConverterParameter属性

    3.使用转换器

    (1)引用转换器所在的命名空间

    xmlns:local1="clr-namespace:WpfTest.View"
    

    (2)定义资源

        <Window.Resources>
            <local1:ForeColorConverter x:Key="foreColor"></local1:ForeColorConverter>
        </Window.Resources>
    

    (3)定义属性

            private int status = 0;
            public int Status
            {
                get => status; set { status = value; RaisePropertyChanged("Status"); }
    
            }

    (4)绑定属性,添加转换器

        <Grid>
            <Label HorizontalAlignment="Left" Height="23" Margin="243,208,0,0" Content="这里哦" Foreground="{Binding Status,Converter={StaticResource foreColor},Mode=OneWay}" VerticalAlignment="Top" Width="120"/>
            <TextBox x:Name="tbName" HorizontalAlignment="Left" Height="23" Margin="243,160,0,0" TextWrapping="Wrap" Text="{Binding Status,UpdateSourceTrigger=LostFocus,Mode=OneWayToSource}" VerticalAlignment="Top" Width="120"/>
            <Button Content="Button" HorizontalAlignment="Left" Margin="389,160,0,0" VerticalAlignment="Top" Width="75"/>
        </Grid>
    

    4.效果

     

     

  • 相关阅读:
    careercup-高等难度 18.1
    面试——网络
    堆和栈的区别(转过无数次的文章)
    Linux用户空间与内核空间(理解高端内存)
    Linux内存管理
    位操作实现加减乘除四则运算
    栈的压入和弹出序列
    DG gap sequence修复一例
    ORACLE 11gR2 DG(Physical Standby)日常维护02
    oracle的特殊权限s bit丢失
  • 原文地址:https://www.cnblogs.com/yaosj/p/11239116.html
Copyright © 2011-2022 走看看