Разный цвет фона для каждого выделенного элемента в списке

#c# #xamarin

#c# #xamarin

Вопрос:

Я создаю список, и мне нужен разный цвет фона для каждого элемента в списке. В моем коде цвет фона белый. Я чего-то не понимаю.

     using Xamarin.Forms;
    namespace App5
    {
        public partial class MainPage : ContentPage
   {
    public class ListItem
    {
        public string Title { get; set; }
        public Color ForeColor { get; set; }
        public Color BackgroundColor { get; set; }
    }
    public MainPage()
    {
        InitializeComponent();

        var listView = new ListView();
        listView.ItemsSource = new ListItem[] {

        new ListItem {Title ="Red", ForeColor = Color.White, BackgroundColor = Color.Red},
        new ListItem {Title ="Orange", ForeColor = Color.White, BackgroundColor = Color.Orange},
        new ListItem {Title ="Yellow", ForeColor = Color.White, BackgroundColor = Color.Yellow},
        new ListItem {Title ="Green", ForeColor = Color.White, BackgroundColor = Color.Green},
        new ListItem {Title ="Blue", ForeColor = Color.White, BackgroundColor = Color.Blue},
        new ListItem {Title ="Violet", ForeColor = Color.White, BackgroundColor = Color.Violet}
        };


        listView.RowHeight = 80;
        listView.ItemTemplate = new DataTemplate(typeof(ListItemCell));
        Content = listView;

        listView.ItemTapped  = async (sender, e) => {
            ListItem item = (ListItem)e.Item;
            await DisplayAlert("Tapped", item.Title.ToString()   " was selected.", "Ok");
            ((ListView)sender).SelectedItem = null;
        };
    }
    class ListItemCell : ViewCell
    {
        public ListItemCell()
        {
            Label titleLabel = new Label
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                FontSize = 25,
                FontAttributes = Xamarin.Forms.FontAttributes.Bold,
                TextColor = Color.White
            };
            titleLabel.SetBinding(Label.TextProperty, "Title");

            StackLayout viewLayoutItem = new StackLayout()
            {
                HorizontalOptions = LayoutOptions.StartAndExpand,
                Orientation = StackOrientation.Vertical,
                Children = { titleLabel}
            };

            StackLayout viewLayout = new StackLayout()
            {
                HorizontalOptions = LayoutOptions.StartAndExpand,
                Orientation = StackOrientation.Horizontal,
                Padding = new Thickness(25, 10, 55, 15),
                Children = { viewLayoutItem }
            };
            View = viewLayout;
        }
    }
}
  

}

Хорошо, после дополнительных исследований я понял, что мне не хватает привязки для предварительного цвета и цвета фона. Пора разобраться с этим фрагментом.

Комментарии:

1. Когда вы задаете вопрос, появляется кнопка, которая выделяет код

2. Вы можете опубликовать свое решение в качестве ответа и пометить его, чтобы его увидело больше людей.

Ответ №1:

Я понял, чего мне не хватало. Я убрал предварительный цвет, потому что смог задать цвет текста по-другому, поскольку весь текст был только одного цвета.

Что касается фона, мне этого не хватало:

viewLayout.Привязка к заданию (StackLayout.BackgroundColorProperty, «Фоновый цвет»);

Теперь это работает 🙂