考虑一个使用 MVVM 编写的 WPF 应用程序。该应用程序需要显示员工列表(名字、姓氏、职务),您可以选择多个进行删除。
在这种情况下,模型将是“ Employee ”,它将实现 INotifyPropertyChanged .
View 将是“ EmployeeListView ”,它将实现 XAML 以显示员工集合。
ViewModel 将是“ EmployeeListViewModel ”,这将公开 可观察集合 , 可以绑定(bind)到 员工列表查看 .
我的问题是:“ IsSelected ”属性应该在哪里?
最佳答案
创建一个可重用的 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;}
在 View 中:
<DataTemplate>
<CheckBox IsChecked="{Binding IsSelected}" Content="{Value.FullName}"/>
</DataTemplate>
然后,您可以通过以下方式检索所有选定的员工:
var selectedemployees = Employees.Where(x => x.IsSelected).Select(x => x.Value);
关于wpf - 仅查看属性(例如 : IsSelected) and the Model in MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18178942/