wpf - 项目属性更改时更新 ListView

标签 wpf listview mvvm

我想实现一个面板来设置用户权限。所以我有一个 PermissionListView,其中 ItemSource 是一个 ObservableCollection,在这个 PermissionListView 中,我为每个绑定(bind)到 PermissionViewModel.Checked 的项目都有一个复选框。我调试了它,这有效。

用户在另一个 ListView(UserListView) 中被选中。但我没有看到比简单地使用 OnSelectionChanged 事件遍历 ObservableCollection 并设置 PermissionViewModel.Checked = true 或 false 更类似于 MVVM 的方法来检查 UserListView.SelectedItem.Permissions 中包含的权限。

但是由于属性的更改不会触发 CollectionChanged 事件,因此面板仍会显示最后一个用户的选择。

  • 是否有更多类似 MVVM 的方法来完成“检查所有也在 UserListView.SelectedItem.Permissions 中的 PermissionViewModels”?
  • 如果没有,在设置列表项目的 Checked 属性后,如何在 Listview 中引起可见的更新?
  • 最佳答案

    我可以使用具有实际用户和权限的示例,所以我将继续创建一个 - 如果这与您尝试做的不匹配,请告诉我。

    您拥有这样的用户和权限(我使用 * 表示选中,使用 Yes 或 - 表示选中):

    UserListView        PermissionsListView
    
    *Fred*              Read Yes
    Wilma               Write -
    Barney              Execute -
    Betty
    

    所以 PermissionsListView 当前显示的是 Fred 的权限。似乎您想知道如何更改权限列表以在选择 Barney 时显示 Barney 的权限。

    您可以做的是将 OnSelectionChanged 绑定(bind)到模型,以便它更新所选用户,然后通过另一个属性提供权限。
    MyPermissionsListModel : INotifyPropertyChanged
    {
       Command OnSelectionChanged(User user) { 
           // Command which calls ChangeSelectedUser
       }
    
       private void ChangeSelectedUser(User user) {
           _user = user;
           PropertyChanged(this, new PropertyChangedEventArgs("Permissions");
       }
    
       public ObservableCollection<Permission> Permissions {
           return new ObservableCollection<Permission>(_user.Permissions);
       }
    }
    

    然后使用数据模板或 GridView 来显示选中或未选中的权限。我假设它们是否被选中或未选中是这里权限的一部分,否则将权限和选中/未选中状态包装在他们自己的一个小 ViewModel 中。如果他们不在用户身上,那么从他们来自的任何地方获取他们。

    有什么不懂的请随时提问;没有图片就很难准确地知道你在做什么!

    关于wpf - 项目属性更改时更新 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3820310/

    相关文章:

    C# 设计器流程图应用程序 - 怎么样?

    c# - WPF:以编程方式更改具有自定义样式的控件的颜色

    c# - 一次只检查一个 ListViewItem

    android - 适配器 View 内部的 OnClickListener

    javascript - 使用 JQuery mobile 创建 ListView 无法正常工作 II

    c# - 从线程MVVM更新进度栏

    c# - WPF 图像查看器示例应用程序

    wpf - 列表框和 MVVM 的用户控制数据绑定(bind)问题

    c# - 如何验证 UserControl 的依赖属性?

    c# - MVVM 按钮可见性