我需要绑定颜色来填充矩形。
XAML:
<Rectangle Fill="{Binding Colorr}"
VerticalAlignment="Center"
Height="3" Width="16"
Margin="3, 1, 5, 0"
Visibility="Visible"/>
视图模型:
public ItemViewModel()
{
Colorr = Colors.Red;;
}
public Color Colorr
{
get {
return color; }
set
{
color = value;
NotifyOfPropertyChange(() => Colorr);
}
}
生成的矩形不可见(或透明 - 很难说......)而不是可见和红色。我怎样摆脱这个问题?
答案 0 :(得分:5)
Rectangle.Fill
(它继承自Shape
)是Brush
,而不是Color
。因此,请将您的媒体设为Brush
:
private Brush _colorr = Brushes.Red;
public Brush Colorr
{
get
{
return _colorr;
}
set
{
_colorr = value;
NotifyOfPropertyChange(() => Colorr);
}
}
可能还有其他问题,但您需要先解决这个问题。
答案 1 :(得分:5)
另一种方法是使用ColorToBrushConverter
,就像下面的那样:
using System.Windows.Data;
using System.Windows.Media;
public class ColorToBrushConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return new SolidColorBrush((Color)value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return (value as SolidColorBrush).Color;
}
}
然后在XAML中将转换器定义为资源并使用它:
<Rectangle Fill="{Binding Colorr, Converter={StaticResource ColorToBrushConverter}}"/>
答案 2 :(得分:0)
我对 Vaidas 提出的 Color BrushConverter 进行了细微更改,以处理可能的空引用异常:
-lz