Программно выделите выбранный элемент в виде списка в xamarin.forms

Я пытаюсь разработать приложение для чата wpf. Я везде искал способ выбрать элемент в ListView и изменить цвет строки, чтобы пользователь знал, какая строка выбрана программно.

Каково мое требование:

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

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

var index = _myViewModel.Users.IndexOf(selectedUser);

MyListView.SelectedItem = _myViewModel.Users[index];

Я погуглил об этом и нашел несколько ссылок, которые предоставляют решения для того же случая в xamarin/xamarin.android/winforms. но ничто не решает мою проблему, поскольку используемые ими свойства недоступны в списке xamarin.forms.

Вот ссылки:

Xamarin Android ListView выберите элемент и измените цвет строки

Как программно выбрать элемент в ListView?.

Возможно ли это сделать. Если да, есть ли обходной путь для достижения этого. Может ли кто-нибудь помочь мне с этим.

Спасибо.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 266
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете сослаться на мой ответ, данный в одном из предыдущих постов: ListView не отменяет выбор

Вы можете создать Custom view cell своего List view и добавить цвет фона в выбранную ячейку просмотра.

Надеюсь, это может решить вашу проблему.

,Спасибо за ответ,Но я разрабатываю приложение wpf, используя xamarin.forms.Есть ли в этом случае средство визуализации??

Harika 09.04.2019 09:37

Вы можете сослаться на это: stackoverflow.com/questions/19766317/…

MShah 09.04.2019 10:28

также stackoverflow.com/questions/91747/…

MShah 09.04.2019 10:28
Ответ принят как подходящий

Решение:

Вы можете связать цвет фона вашей ячейки со свойством в вашей модели. Когда пользователь щелкнул это уведомление, измените цвет фона конкретной ячейки в модели, а затем он изменится в представлении списка:

    private void ClickNotification(object sender, EventArgs e)
    {
        var index = _myViewModel.Users.IndexOf(selectedUser);

        //change the background color of the specific cell in model
        myModel model = _myModelList[index];
        model.myBackColor = Color.Blue;
    }

В модели:

class myModel : INotifyPropertyChanged
{
    Color backColor;

    public event PropertyChangedEventHandler PropertyChanged;

    public myModel( Color myColor)
    {
        backColor = myColor;
    }

    public Color myBackColor
    {
        set
        {
            if (backColor != value)
            {
                backColor = value;

                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("myBackColor"));
                }
            }
        }
        get
        {
            return backColor;
        }
    }
}

И в xaml:

<ListView x:Name = "myListView">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout Orientation = "Horizontal" BackgroundColor = "{Binding myBackColor}">

                </StackLayout>

            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

Другие вопросы по теме