如何在我的代码中设置ListView的SelectedItem
?我的问题是,当我在我的代码中预选一个项目时,并没有突出显示。 ListView在xaml文件中定义。
<ListView ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}" />
我的ViewModel
class MyViewModel
{
List<MyItem> Items {get; set;}
MyItem SelectedItem { get; set; }
public MyViewModel()
{
Items = new List<MyItem>{ ... };
SelectedItem = Items.First();
}
}
但是当我显示视图时,它没有突出显示所选项目。当我点击某个项目时,它会突出显示并正确设置。我已经改变了属性,但这不应该有效果,因为属性在构造函数中设置正确。
答案 0 :(得分:1)
为了让您的视图在MyViewModel
上的属性发生更改时进行更新,该类必须实现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
答案 1 :(得分:0)
就我而言,这仅仅是...。(例如,自动选择具有一个元素的第一个元素)
protected override async void OnAppearing()
{
if (MyList.Count == 1)
{
List_CheckPoint.SelectedItem = MyList[0];
}
}