这是我尝试过的。构造函数中的更改有效,但我似乎无法动态更改。
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方法内部进行更改提出一些想法吗?
答案 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);
}