繁体   English   中英

在xamarin.forms中以编程方式突出显示列表视图选定项

[英]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选择项目并更改行颜色

如何以编程方式选择ListView中的项目?

是否可以这样做。如果是的话,是否有任何解决方法来实现这一点。任何人都可以帮助我。

谢谢。

您可以参考上一篇文章中给出的答案: ListView不会取消选择

您可以创建List view Custom view cell ,并将背景颜色添加到选定的视图单元格。

希望这可以解决您的问题。

解:

您可以将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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM