绑定整数以用颜色填充矩形

时间:2018-12-18 10:03:46

标签: c# wpf xaml

我在WPF应用程序中有一个矩形,我想用一种颜色填充它。此颜色基于我的代码中的值。该值可以从0到1023。

如果该值为0,则我希望Rectangle填充为黑色,直到1023变为全白。

我知道我需要某种转换器来执行此操作,但是我看不到自己在做错什么,我对IValueConverters并没有太多经验。

在我的XAML代码中,我具有以下代码:

<Page.Resources>
    <root:IntegerToColorConverter x:Key="integerColorConverter" />
</Page.Resources>

然后在XAML代码中按以下方式使用转换器转换器:

<Grid>
    <Rectangle Grid.Column="1" Grid.Row="1" Fill="{Binding Path=LightDiodeValue, Converter={StaticResource integerColorConverter}}" Width="10" Height="10" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,60"/>
</Grid>

显示“页面”时,将调用IntegerToColorConverter,并且我可以看到它使用所需的值创建了SolidBrush,然后将其返回,但是由于某些原因,矩形未用此SolidBrush填充。

转换器看起来像这样:

class IntegerToColorConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            int iValue = (int)value;
            iValue = iValue * 255 / 1024; //Convert from  1024 range to 255 range
            Color customColor = Color.FromArgb(255, iValue, iValue, iValue);
            SolidBrush integerBrush = new SolidBrush(customColor);

            return integerBrush ;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            SolidBrush brush = (SolidBrush)value;

            int iValue = (brush.Color.R + brush.Color.G + brush.Color.B) * 1024 / 255 / 3;
            return iValue;
        }
    }

我在这里做错什么了?

0 个答案:

没有答案