我在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;
}
}
我在这里做错什么了?