Xamarin.Forms, как привязать цвет фона в зависимости от условий - PullRequest
0 голосов
/ 19 сентября 2018

как вы можете связать цвет фона в зависимости от статуса, я попробовал этот код, и он не работал

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 голосов
/ 19 сентября 2018

сначала вы можете привязать только к общедоступным свойствам

public Color BGColor { get; set; }

BindingContext = this;

, затем в своем коде установите значение этого свойства - вам также может понадобиться реализовать 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;
                }

            }
0 голосов
/ 19 сентября 2018

Вы меняете this.BindingContext без вызова наблюдателя.Таким образом, цвет меняется, но представление не получает уведомления.

Добавьте «набор» к цвету, содержащему RaisePropertyChanged, как показано ниже:

 set { color = value; 
         RaisePropertyChanged("Model");  //<- this should tell the view to update
     }

Теперь каждый раз, когда цвет изменяетсяВ представлении создается триггер для обновления состояния связанного цвета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...