簡體   English   中英

如果我的屬性是數據庫中的字符串(xamarin.forms),我如何將顏色傳遞給我的 UI

[英]How can i pass a color to my UI if my property is a string in my database (xamarin.forms)

現在我得到一個隨機的十六進制顏色值,我正在嘗試將它分配給背景顏色。 (是的,如果我硬核一種顏色,它會起作用)

該值已存儲(您可以在下圖中看到)但不知何故它不顯示顏色,我不知道為什么。

我有一種感覺,這是因為我試圖給 BackGroundColor 一個字符串,所以它無法識別它,因為它不是顏色。 但是在數據庫中,您不能放置 Color 屬性。

有什么想法或其他方法嗎? 謝謝

在此處輸入圖像描述

數據庫中的線條顏色值

    [PrimaryKey, AutoIncrement]
    public int ID { get; set; }
    public string TasksGroupDescription { get; set; }
    public DateTime TasksGroupDate { get; set; }

    public double ExpositionResult { get; set; }

    public string LineColor { get; set; }

    [OneToMany(CascadeOperations = CascadeOperation.All)]
    public List<Tasks> Taches { get; set; }

BaseViewModel.cs 屬性

private string lineColor;
public string LineColor
{
    get
    {
        return lineColor;
    }
    set
    {
        lineColor = value;
        NotifyPropertyChanged();
    }
}

TasksGroupPageViewModel.cs 我有我的 function 生成顏色並在構造函數中調用它

public string RandomColorGenerator()
{

    var random = new Random();
    var color = String.Format("#{0:X6}", random.Next(0x1000000));
    return color;
}

    public TasksGroupPageViewModel()
    {

        DeleteTasksGroupCommand = new Command(new Action<object>((obj) =>
        {

            DeleteTasksGroup((TasksGroup)obj);
        }));

        LineColor = RandomColorGenerator();
        GetTaskgroups();

    }

編輯評論中的問題

在此處輸入圖像描述

使用ToHexFromHexColor轉換為string

private string lineColor;
public Color LineColor
{
    get
    {
        return Color.FromHex(lineColor);
    }
    set
    {
        lineColor = value.ToHex();
        NotifyPropertyChanged();
    }
}

public Color RandomColorGenerator()
{
    var random = new Random();
    var color = String.Format("#{0:X6}", random.Next(0x1000000));
    return Color.FromHex(color);
}

BackgroundColorColor類型 object,將您的數據庫十六進制字符串或隨機十六進制轉換為Color

private string lineColor;
public Color LineColor
{
    get
    {
        return Color.FromHex(lineColor);
    }
    set
    {
        lineColor = value;
        NotifyPropertyChanged();
    }
}

RandomColorGenerator方法移動到BaseViewModel.cs ,在 BaseViewModel 的構造函數中設置lineColor

   public class BaseViewModel:INotifyPropertyChanged
    {
        public BaseViewModel()
        {
            lineColor = RandomColorGenerator();
        }
        private string lineColor;
        public Color LineColor
        {
            get
            {
                return Color.FromHex(lineColor);
            }
            set
            {
                lineColor = value.ToHex();
                OnPropertyChanged("LineColor");
            }
        }

        public string RandomColorGenerator()
        {

            var random = new Random();
            var color = String.Format("#{0:X6}", random.Next(0x1000000));
            return color;
        }
        public event PropertyChangedEventHandler PropertyChanged;

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM