WPF值转换器

效果 文本绑定颜色

首先实现一个颜色转换器类 继承IValueConvert接口

class ColorValueConvert : IValueConverter
    {

        #region Field 字段



        #endregion

        #region Constructor 构造函数



        #endregion

        #region Property 属性



        #endregion

        #region Event 事件



        #endregion

        #region Method 方法



        #endregion
        /// <summary>
        /// 颜色转换器
        /// </summary>
        /// <param name="value"></param>
        /// <param name="targetType"></param>
        /// <param name="parameter"></param>
        /// <param name="culture"></param>
        /// <returns></returns>
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var colorString = value.ToString().Split(new char[] { ':' })[1].Trim();//颜色文本;
            var flag = System.Convert.ToBoolean(parameter);//确是否转换
            if (flag)
            {
                switch (colorString)
                {
                    case "红色":
                        return Brushes.Red;
                    case "绿色":
                        return Brushes.Green;
                    case "蓝色":
                        return Brushes.Blue;
                    case "紫色":
                        return Brushes.Violet;
                    default:
                        return Brushes.Transparent;
                }
            }
            return null;
        }

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

在界面中引用转换器

xmlns:convert="clr-namespace:值转换器"

创建资源

<Window.Resources>
<convert:ColorValueConvert x:Key="colorConvert" />
</Window.Resources>

使用

 <StackPanel VerticalAlignment="Center" Orientation="Vertical">
            <ComboBox x:Name="cbox"
                      Width="300"
                      SelectedIndex="0"
                      Margin="10">
                <ComboBoxItem Content="红色" />
                <ComboBoxItem Content="绿色" />
                <ComboBoxItem Content="蓝色" />
                <ComboBoxItem Content="紫色" />
            </ComboBox>
            <Rectangle Width="200"
                       Height="200"
                       Fill="{Binding ElementName=cbox, Path=SelectedItem, Converter={StaticResource colorConvert}, ConverterParameter=True}" />
        </StackPanel>

界面完整代码

<Window x:Class="值转换器.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:convert="clr-namespace:值转换器"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:local="clr-namespace:值转换器"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        Title="MainWindow"
        Width="800"
        Height="450"
        mc:Ignorable="d">
    <Window.Resources>
        <convert:ColorValueConvert x:Key="colorConvert" />
    </Window.Resources>
    <Grid>
        <StackPanel VerticalAlignment="Center" Orientation="Vertical">
            <ComboBox x:Name="cbox"
                      Width="300"
                      SelectedIndex="0"
                      Margin="10">
                <ComboBoxItem Content="红色" />
                <ComboBoxItem Content="绿色" />
                <ComboBoxItem Content="蓝色" />
                <ComboBoxItem Content="紫色" />
            </ComboBox>
            <Rectangle Width="200"
                       Height="200"
                       Fill="{Binding ElementName=cbox, Path=SelectedItem, Converter={StaticResource colorConvert}, ConverterParameter=True}" />
        </StackPanel>
    </Grid>
</Window>

 

posted @ 2021-04-24 13:19  只吃肉不喝酒  阅读(261)  评论(0编辑  收藏  举报