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

Wenyan Zhang (Shanghai Wicresoft Co,.Ltd.) 36,451 信誉分 Microsoft 外部员工
2024-01-30T06:40:39.8566667+00:00

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

开发人员技术 | .NET | .NET MAUI
0 个注释 无注释
{count} 票

问题作者接受的答案
  1. Yonglun Liu (Shanghai Wicresoft Co,.Ltd.) 50,156 信誉分 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 个其他答案

排序依据: 非常有帮助

你的答案

提问者可以将答案标记为“已接受”,版主可以将答案标记为“已推荐”,这有助于用户了解答案是否解决了提问者的问题。