考虑使用MVVM编写的WPF应用程序。应用程序需要显示员工列表(FirstName,LastName,Title),您可以选择要删除的多个。
此案例中的模型为“员工”,并且会实施 INotifyPropertyChanged 。
View将是“ EmployeeListView ”,它将实现XAML以显示Employees集合。
ViewModel将是“ EmployeeListViewModel ”,它会公开 ObservableCollection ,可以绑定到 EmployeeListView 。
我的问题是:“ IsSelected ”属性应该在哪里生效?
答案 0 :(得分:6)
创建一个可重用的Generic SelectableItem,它包装EmployeeList中的每个项目:
简单示例:
public class SelectableItem<T>: INotifyPropertyChanged
{
public bool IsSelected {get;set;} //PropertyChanged(), etc
public T Value {get;set;}
}
然后在ViewModel中:
public ObservableCollection<SelectableItem<Employee>> Employees {get;set;}
并在视图中:
<DataTemplate>
<CheckBox IsChecked="{Binding IsSelected}" Content="{Value.FullName}"/>
</DataTemplate>
然后您可以通过以下方式检索所有选定的员工:
var selectedemployees = Employees.Where(x => x.IsSelected).Select(x => x.Value);