gpt4 book ai didi

android - Xamarin.Forms ListView 通过代码设置 SelectedItem

转载 作者:行者123 更新时间:2023-11-30 01:52:07 25 4
gpt4 key购买 nike

如何在我的代码中设置 ListView 的 SelectedItem?我的问题是,当我在我的代码中预选一个项目时,它没有突出显示。 ListView 在 xaml 文件中定义。

<ListView ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}" />

我的 View 模型

class MyViewModel
{
List<MyItem> Items {get; set;}
MyItem SelectedItem { get; set; }

public MyViewModel()
{
Items = new List<MyItem>{ ... };
SelectedItem = Items.First();
}
}

但是当我显示 View 时,它没有突出显示所选项目。当我单击某个项目时,它会突出显示并正确设置。我试过更改属性,但这应该不会有影响,因为属性是在构造函数中设置的。

最佳答案

为了在 MyViewModel 上的属性更改时更新您的 View ,该类必须实现 INotifyPropertyChanged。这是一个例子:

public class MyViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;

protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}

重要的是您必须在 setter 中调用OnPropertyChanged,因此您的SelectedItem 属性需要如下所示:

MyItem _selectedItem;
MyItem SelectedItem {
get {
return _selectedItem;
}
set {
_selectedItem = value;
OnPropertyChanged("SelectedItem");
}
}

这里有很多关于 Xamarin Forms 中 MVVM 的有用信息:From Data Bindings to MVVM

关于android - Xamarin.Forms ListView 通过代码设置 SelectedItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32870279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com