ListView 的 SelectedItem 属性无法在代码中设置

Wenyan Zhang (Shanghai Wicresoft Co,.Ltd.) 30,231 信誉分 Microsoft 供应商
2024-01-30T06:40:39.8566667+00:00

ListView 的 SelectedItem 属性无法在代码中设置,如果在代码中设置它,则它不会显示在视图中,也不会触发 ItemSelected 事件。

.NET MAUI
.NET MAUI
一种 Microsoft 开源框架,用于构建跨移动设备、平板电脑、台式机的原生设备应用程序。
75 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Yonglun Liu (Shanghai Wicresoft Co,.Ltd.) 41,351 信誉分 Microsoft 供应商
    2024-01-30T06:43:32.7933333+00:00

    你好,

    你可以使用数据绑定的方式修改 SelectedItem 并通过 OnPropertyChanged 方法发送广播,以使 ListView 视图和 ItemSelected 事件可以响应数据变化。

    请参考以下步骤:

    第一步: 在 ViewModel 中实现 INotifyPropertyChanged 接口:

    MainViewModel : INotifyPropertyChanged
    {
    	public event PropertyChangedEventHandler PropertyChanged; 
    	public void OnPropertyChanged([CallerMemberName] string name = "") =>
    	PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
    }
    

    第二步: 实现与 SelectedItem 相关属性 SelItem 的数据绑定方法:

    private Item selItem; 
    
    public Item SelItem 
    {
        get
        {
            return selItem;
        }
        set
        {
            if (value != selItem)
            {
                selItem = value;
                OnPropertyChanged(); // reports this property has changed.
            }
        }
    }
    

    第三步: 在 ViewModel 中设置 SelItem,例如 SelItem = Items[1]; // Items 是绑定到 ListView 的 ItemsSource。

    第四步: 将 ViewModel 绑定到 ListView。

    // in the page code behind
    BindingContext = new MainViewModel();
    
    // in xaml
    <ListView ItemSelected="vegColl_ItemSelected" ItemsSource="{Binding Items}" SelectedItem="{Binding SelItem,Mode=TwoWay}">
    

    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。
    注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。