C#WPF矩形填充绑定

时间:2016-12-12 15:08:27

标签: c# wpf xaml mvvm caliburn.micro

我需要绑定颜色来填充矩形。

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);
    }
}

生成的矩形不可见(或透明 - 很难说......)而不是可见和红色。我怎样摆脱这个问题?

3 个答案:

答案 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