为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 Rectangle.Fill 多重绑定不起作用?

为什么 Rectangle.Fill 多重绑定不起作用?

C#
HUX布斯 2023-12-17 16:55:43
我想创建一个简单的 WPF 应用程序,您可以在其中设置 RGB 颜色(通过 3 个滑块 - 每个通道一个)以及结果填充 Rectangle 的颜色。当然,仅使用 XAML 就可以做到这一点,因为我想提供来自三个不同值的 Rectangle.Fill,所以我使用了 IMultiValueConverter绑定。        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)        {            return new SolidColorBrush(ExtractColorFrom(values));        }        private Color ExtractColorFrom(object[] values)        {            byte red = System.Convert.ToByte((double)values[0]);            byte green = System.Convert.ToByte((double)values[1]);            byte blue = System.Convert.ToByte((double)values[2]);            Color color = new Color();            color.R = red;            color.G = green;            color.B = blue;            return color;        }但该绑定不适用于 Rectangle.Fill。 XAML 有问题吗?
查看完整描述

1 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

验证您的 IMultiValueConverter 实现。


您可以使用 Color.FromRgb(red, green, blue);


对我有用!


public class RgbToBrushConverter : IMultiValueConverter

{

    public RgbToBrushConverter()

    {


    }


    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)

    {

        var x = ExtractColorFrom(values);

        return new SolidColorBrush(x);

    }


    private Color ExtractColorFrom(object[] values)

    {

        byte red = System.Convert.ToByte((double)values[0]);

        byte green = System.Convert.ToByte((double)values[1]);

        byte blue = System.Convert.ToByte((double)values[2]);

        return Color.FromRgb(red, green, blue);

    }


    ///MUST!!!!!

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)

    {

        throw new NotImplementedException();

    }

}

https://img1.sycdn.imooc.com/657eb7c7000115b106460364.jpg

并检查 Text='R' x 3 ?文本=“G” ,“B” ?



查看完整回答
反对 回复 2023-12-17
  • 1 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信