Converter转换器与多值转换器

1.UI

    <Window.Resources>
        <!--普通转换器 -->
        <local:DispalyConverter x:Key="dis"></local:DispalyConverter>
        <!--多值转换器 -->
        <local:MultDispalyConverter x:Key="multDis"></local:MultDispalyConverter>
    </Window.Resources>
    
    
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>
        
        <StackPanel>
            <!--普通转换器-->
            <TextBox Text="0" Name="t1" FontSize="50"></TextBox>
                <TextBlock Text="{Binding ElementName=t1,Path=Text,Converter={StaticResource dis}}"   FontSize="50"></TextBlock>
        </StackPanel>

        <StackPanel Grid.Column="1">
            <Slider x:Name="slider_R" Minimum="0" Maximum="255" Margin="10"></Slider>
            <Slider x:Name="slider_G" Minimum="0" Maximum="255" Margin="10"></Slider>
            <Slider x:Name="slider_B" Minimum="0" Maximum="255" Margin="10"></Slider>

            <!--<TextBlock  Margin="20" FontSize="50">
                --><!--<TextBlock.Background>
                    --><!--多值转换器,将三个颜色转换为背景色--><!--
                    <MultiBinding Converter="{StaticResource multDis}">
                        <Binding ElementName="slider_R" Path="Value" />
                        <Binding ElementName="slider_G" Path="Value" />
                        <Binding ElementName="slider_B" Path="Value" />
                    </MultiBinding>
                </TextBlock.Background>--><!--

                <TextBlock.Text>
                    --><!--多值转换器,将三个颜色转换为背景色--><!--
                    <MultiBinding Converter="{StaticResource multDis}">
                        <Binding ElementName="slider_R" Path="Value" />
                        <Binding ElementName="slider_G" Path="Value" />
                        <Binding ElementName="slider_B" Path="Value" />
                    </MultiBinding>
                </TextBlock.Text>
            </TextBlock>-->
            <!--不知道为什么TextBlock.Text里面不能显示值,Label.Content可以显示出来-->
            <Label  Margin="20" FontSize="50">
                <Label.Background>
                    <MultiBinding Converter="{StaticResource multDis}">
                        <Binding ElementName="slider_R" Path="Value" />
                        <Binding ElementName="slider_G" Path="Value" />
                        <Binding ElementName="slider_B" Path="Value" />
                    </MultiBinding>

                </Label.Background>
                <Label.Content>
                    <MultiBinding Converter="{StaticResource multDis}">
                        <Binding ElementName="slider_R" Path="Value" />
                        <Binding ElementName="slider_G" Path="Value" />
                        <Binding ElementName="slider_B" Path="Value" />
                    </MultiBinding>
                </Label.Content>
            </Label>
        </StackPanel>
    </Grid>

普通转换器,功能实现

    public class DispalyConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value != null)
            {
                string str = value.ToString();
                if (str== "1")
                {
                    return "True";
                }
                else
                {
                    return "False";
                }
            }
            return "False";
        }

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

多值通转换器,功能实现

    public class MultDispalyConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            if (values.Length != 3)
            { return null; }


            byte r = System.Convert.ToByte(values[0]);
            byte g = System.Convert.ToByte(values[1]);
            byte b = System.Convert.ToByte(values[2]);

            System.Windows.Media.Color color= System.Windows.Media.Color.FromRgb(r, g, b);

            SolidColorBrush brush = new SolidColorBrush(color);
            return brush;
        }

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

Demo:

WPF转换器Demo,有普通转换器与多值转换器-C#文档类资源-CSDN下载WPF转换器Demo,有普通转换器与多值转换器更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/lw8014/85363302

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值