首页 > 解决方案 > 基于属性的列表视图项目背景颜色(WPF / MVVM)

问题描述

我想在 ListView 中显示标题和颜色(见图 - 将 14474460 替换为相应的颜色)在此处输入图像描述

颜色将由颜色选择器选择(参见“OrangeRed”)。所以一切正常,SQLite 数据库更新,数字相应改变,但我不能改变背景。

我的 XAML

            <GridViewColumn Header="Color">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Color}"  Background="{Binding ColorBackground}" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>

我的 Color 属性(绑定到 ColorPicker - 将颜色存储为 System.Windows.Media.Color)

public Color Color
{
    get { return color; }
    set
    {
        color = value;
        NotifyPropertyChanged("Color");
    }
}

我的背景颜色属性(绑定到文本块 - 猜我这里需要一个画笔,对吧?)

public Brush ColorBackground
{
    get { return colorbackground; }
    set
    {
        colorbackground = new SolidColorBrush(Color);
        NotifyPropertyChanged("ColorBackground");
    }
}

我的 LeaveType 实体

using Dapper.Contrib.Extensions;
using System.ComponentModel;
using System.Windows.Media;

namespace Calendar.Database.Entities
{
    [Dapper.Contrib.Extensions.Table("LeaveTypes")]
    public class LeaveTypeEntity : Entity, INotifyPropertyChanged
    {

        private long color;
        public long Color
        {
            get
            {
                return color;
            }
            set
            {
                color = value;
                NotifyPropertyChanged("Color");
            }
        }

        private string type;
        public string Type
        {
            get
            {
                return type;
            }
            set
            {
                type = value;
                NotifyPropertyChanged("Type");
            }
        }

        private Brush colorbackground;
        [Computed]
        public Brush ColorBackground
        {
            get { return colorbackground; }
            set
            {
                colorbackground = value;
                NotifyPropertyChanged("ColorBackground");
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected void NotifyPropertyChanged(string propertyName)
        {
            this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

我的助手消息框(在更新方法之后)返回 ColorBackground 的十六进制代码,所以我想这不是问题。任何人都可以帮忙吗?

更新 ColorBackground 属性(ViewModel 文件)

public Brush ColorBackground { get; set; }

颜色属性(ViewModel 文件)

private Color color;
public Color Color
{
    get { return color; }
    set
    {
        color = value;
        ColorBackground = new SolidColorBrush(Color);
        NotifyPropertyChanged("Color");
    }
}

标签: c#wpf

解决方案


推荐阅读