如何在Xamarin C#中动态更改标签文本的颜色?

时间:2017-07-17 13:00:59

标签: xamarin xamarin.forms

这是我尝试过的。构造函数中的更改有效,但我似乎无法动态更改。

    public PhrasesFrame()
    {
        InitializeComponent();
        correctButton.Clicked += correctButtonClicked;
        resetButton.Clicked += resetButtonClicked;
        faveLabel.BackgroundColor = Color.Red;
        faveLabel.GestureRecognizers.Add(new TapGestureRecognizer
        {
            Command = new Command(() => FaveLabelTapped())
        });
        // this works
        faveLabel.TextColor = Color.Red;

    }

    void FaveLabelTapped()
    {
        AS.phrase.Favorite = !AS.phrase.Favorite;
        if (AS.phrase.Favorite) {
            // this gives an error
            faveLabel.TextColor = Color.Red;
        } else {
            faveLabel.TextColor = Color.Yello;
        }
        App.DB.UpdateFavorite(AS.phrase.Favorite, AS.phrase.PhraseId);
    }

给我留言

  

当前上下文中不存在颜色

有人可以就我如何从FaveLabelTapped方法内部进行更改提出一些想法吗?

1 个答案:

答案 0 :(得分:0)

如果你真的在玩耍,为什么你不能做这样的事情:

    public PhrasesFrame()
    {
        InitializeComponent();
        correctButton.Clicked += correctButtonClicked;
        resetButton.Clicked += resetButtonClicked;
        faveLabel.BackgroundColor = Color.Red;
        faveLabel.GestureRecognizers.Add(new TapGestureRecognizer
        {
            Command = new Command(() => 
            {
                 AS.phrase.Favorite = !AS.phrase.Favorite;
                 if (AS.phrase.Favorite) 
                 {
                      faveLabel.TextColor = Color.Red;
                 }

                 App.DB.UpdateFavorite(AS.phrase.Favorite, AS.phrase.PhraseId);
            })
        });
    }

在分配命令的同一点创建命令允许您将指针正确地关联到标签。除非你关心使用方法' FaveLabelTapped()'在其他地方,没有必要将它重构为自己的方法。

编辑:

它可能无法解析对“颜色”的引用。在运行时正确类,所以你也可以尝试:

void FaveLabelTapped()
{
    AS.phrase.Favorite = !AS.phrase.Favorite;
    if (AS.phrase.Favorite) {
        // this gives an error
        faveLabel.TextColor = Xamarin.Forms.Color.Red; //Change this to include the assembly reference.
    }
    App.DB.UpdateFavorite(AS.phrase.Favorite, AS.phrase.PhraseId);
}