如何根据状态绑定背景颜色 我尝试了这段代码,但没有用
var cat = JsonConvert.DeserializeObject<List<TableStat>>(response);
for(int i = 0;i<cat.Count;i++)
{
if (cat[i].table_status == "Available")
{
color = "Green";
this.BindingContext = color;
}
else if (cat[i].table_status == "Unavailable")
{
color = "Black";
this.BindingContext = color;
}
}
然后我将颜色绑定到.xaml
<StackLayout HorizontalOptions="FillAndExpand" BackgroundColor="{Binding color}">
答案 0 :(得分:1)
您正在更改this.BindingContext而不调用观察者。因此颜色会发生变化,但视图不会得到通知。
向包含RaisePropertyChanged的颜色添加一个“集合”,如下所示:
set { color = value;
RaisePropertyChanged("Model"); //<- this should tell the view to update
}
现在,无论何时更改颜色,都将触发“视图”以更新绑定颜色的状态。
答案 1 :(得分:1)
首先,您只能绑定到公共属性
public Color BGColor { get; set; }
BindingContext = this;
然后在代码中设置Property的值-您可能还需要在类上实现INPC
for(int i = 0;i<cat.Count;i++)
{
if (cat[i].table_status == "Available")
{
BGColor = Color.Green;
}
else if (cat[i].table_status == "Unavailable")
{
BGColor = Color.Black;
}
}