Xamarin.Forms如何根据条件绑定背景色

时间:2018-09-19 12:48:28

标签: c# android ios xaml xamarin

如何根据状态绑定背景颜色 我尝试了这段代码,但没有用

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}">

2 个答案:

答案 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;
                }

            }