代码之家  ›  专栏  ›  技术社区  ›  Marks

项目属性更改时更新ListView

  •  1
  • Marks  · 技术社区  · 15 年前


    用户在另一个ListView(UserListView)中被选中。但是我没有看到一个更像MVVM的方法来检查UserListView.SelectedItem.Permissions权限,而不是简单地使用OnSelectionChanged事件迭代observeCollection和setPermissionViewModel。选中=正确或错误。

    1. 有没有其他类似MVVM的方法来完成“检查所有的PermissionViewModels,它们也在UserListView.SelectedItem.Permissions权限' ?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Lunivore    15 年前

    我可以用一个实际用户和权限的例子,所以我要继续创建一个-请告诉我,如果这不符合你要做的。

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

    您可以做的是将OnSelectionChanged绑定到模型,以便它更新所选用户,然后通过另一个属性提供权限。

    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);
       }
    }
    

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

    请随便问任何我不懂的问题;没有照片你很难准确地知道你在做什么!

        2
  •  0
  •   Rune Andersen    15 年前

    作为另一个答案,您应该实现INotifyPropertyChanged-我还将引入CollectionView并设置IsSynchronizedWithCurrentItem=true,并在该视图上处理更改的选择,而不是与视图分离。

    你也可以退房 http://mvvmfoundation.codeplex.com/