[英]Highlight the list-view selected item programatically in xamarin.forms
我正在尝试开发一个wpf聊天应用程序。我一直在寻找一种方法来选择ListView中的项目并更改行的颜色以让用户知道以编程方式选择哪一行。
我的要求到底是什么:
在登录到应用程序时,用户能够看到频道和联系人列表,并且登录用户在用户向他发送消息时收到通知。如果用户点击该通知,则应突出显示消息发送者联系人以允许用户知道打开了哪个聊天。
我已经尝试将listview的所选项目设置为基于id的发件人,但仍然没有用。
var index = _myViewModel.Users.IndexOf(selectedUser);
MyListView.SelectedItem = _myViewModel.Users[index];
我已经搜索了这个,并找到了一些链接,为xamarin / xamarin.android / winforms中的相同案例提供了解决方案。 但没有解决我的问题,因为他们使用的属性在xamarin.forms列表视图中不可用。
以下是链接:
Xamarin Android ListView选择项目并更改行颜色
是否可以这样做。如果是的话,是否有任何解决方法来实现这一点。任何人都可以帮助我。
谢谢。
解:
您可以将Cell的背景颜色与模型中的属性绑定。 当用户单击该通知时,更改模型中特定单元格的背景颜色,然后它将在列表视图中更改:
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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.