zoukankan      html  css  js  c++  java
  • WPF学习整理总结 --转换器

    作用

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

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

     class ForeColorConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                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";
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            {
                return null;
            }
        }

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

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

    参数parameter:对应Binding的ConverterParameter属性

    3.使用转换器

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

      xmlns:local="clr-namespace:Converter"

    (2)定义资源

     <UserControl.Resources>
            <local:ForeColorConverter x:Key="forColorConverter"/>
        </UserControl.Resources>

    (3)定义属性

      public UserControl1()
            {
                InitializeComponent();
                this.DataContext = new ViewModel();
            }
            public class ViewModel : ViewModelBase
            {
                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 forColorConverter},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>
     
  • 相关阅读:
    windows10(64位)Anaconda3+Python3.6搭建Tensorflow(cpu版本)及keras
    Windows10下安装pytorch并导入pycharm
    应用程序无法正常启动0xc000007b解决
    Clion安装配置
    Android Studio安装&&安装bug
    VMWARE虚拟机安装64位系统此主机支持IntelVTx 但IntelVTx处于禁用状态
    A. Text Volume
    1001 数组中和等于K的数对
    11100
    Seek the Name, Seek the Fame
  • 原文地址:https://www.cnblogs.com/jiangxiaoming/p/14236428.html
Copyright © 2011-2022 走看看