Я пытаюсь разработать приложение для чата wpf. Я везде искал способ выбрать элемент в ListView и изменить цвет строки, чтобы пользователь знал, какая строка выбрана программно.
Каково мое требование:
При входе в приложение пользователь может видеть список каналов и контактов, а вошедший в систему пользователь получает уведомление, когда пользователь отправляет ему сообщение. Если пользователь щелкнул это уведомление, контакт отправителя сообщения должен быть выделен, чтобы позволить пользователь знает, какой чат открыт.
Я пытался установить выбранный элемент списка в качестве отправителя на основе идентификатора, но все равно бесполезно.
var index = _myViewModel.Users.IndexOf(selectedUser);
MyListView.SelectedItem = _myViewModel.Users[index];
Я погуглил об этом и нашел несколько ссылок, которые предоставляют решения для того же случая в xamarin/xamarin.android/winforms. но ничто не решает мою проблему, поскольку используемые ими свойства недоступны в списке xamarin.forms.
Вот ссылки:
Xamarin Android ListView выберите элемент и измените цвет строки
Как программно выбрать элемент в ListView?.
Возможно ли это сделать. Если да, есть ли обходной путь для достижения этого. Может ли кто-нибудь помочь мне с этим.
Спасибо.
Вы можете сослаться на мой ответ, данный в одном из предыдущих постов: ListView не отменяет выбор
Вы можете создать Custom view cell
своего List view
и добавить цвет фона в выбранную ячейку просмотра.
Надеюсь, это может решить вашу проблему.
Вы можете сослаться на это: stackoverflow.com/questions/19766317/…
также stackoverflow.com/questions/91747/…
Решение:
Вы можете связать цвет фона вашей ячейки со свойством в вашей модели. Когда пользователь щелкнул это уведомление, измените цвет фона конкретной ячейки в модели, а затем он изменится в представлении списка:
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>
,Спасибо за ответ,Но я разрабатываю приложение wpf, используя xamarin.forms.Есть ли в этом случае средство визуализации??