wpf mvvm 实现listview默认选中首行
时间: 2023-08-25 18:04:35 浏览: 179
在 WPF MVVM 中,通常建议使用数据绑定来实现视图和视图模型之间的交互。因此,要实现 ListView 默认选中首行,可以在视图模型中添加一个属性,表示当前选中的行,并在 XAML 中绑定这个属性到 ListView 的 SelectedItem 属性上。
以下是一个简单的示例代码:
在视图模型中定义一个 CurrentItem 属性:
```csharp
public class ViewModel : INotifyPropertyChanged
{
private ObservableCollection<Item> _items;
private Item _currentItem;
public ObservableCollection<Item> Items
{
get { return _items; }
set { _items = value; NotifyPropertyChanged(); }
}
public Item CurrentItem
{
get { return _currentItem; }
set { _currentItem = value; NotifyPropertyChanged(); }
}
// INotifyPropertyChanged 实现代码省略
}
```
在 XAML 中绑定 ListView 的 ItemsSource 和 SelectedItem 属性:
```xml
<ListView ItemsSource="{Binding Items}" SelectedItem="{Binding CurrentItem}" />
```
这样,当 ItemsSource 发生变化时,ListView 的内容会自动更新。而当 CurrentItem 发生变化时,ListView 中对应的行就会被选中。
为了实现默认选中首行,可以在视图模型的构造函数中设置 CurrentItem 的值为 Items 中的第一行:
```csharp
public ViewModel()
{
Items = new ObservableCollection<Item>
{
new Item { Name = "Item 1" },
new Item { Name = "Item 2" },
new Item { Name = "Item 3" }
};
CurrentItem = Items.FirstOrDefault();
}
```
这样,ListView 在初始化时就会默认选中第一行。
希望这个示例代码能够帮到你。
阅读全文