我有一个带MVVM的WPF应用程序。据我所知,MVVM的主要目标是将逻辑层和UI层分开。
我有这个Model类:
public class User
{
public string Login{get;set;}
public string Pwd{get;set;}
public List<User> GetUsers()
{
//
}
}
在我的ViewModel中,我实现了用户对象和用户
的ObservableCollection public class UserVM
{
public User _User{get;set;}
public ObservableCollection<User> liste{get; private set;}
public UserVM()
{
_User = new User("TODO","PWD2");
liste = new ObservableCollection(_User.GetUsers);
}
}
我觉得我直接将UI属性绑定到模型对象,所以我需要知道:
_User
属性时,我是否尊重MVVM架构?liste
时,我是否尊重MVVM架构?谢谢,
答案 0 :(得分:0)
看起来你的User类有一个类似树的结构,它包含一个User对象列表,它本身可能包含一个User对象列表......
这里的问题是您的视图模型类包含User对象。例如,只有UserVM模型包含ObservableCollection。
一个简单的解决方法是:编辑 user.GetUsers()不会返回List<UserVM>
public class UserVM
{
public string Login { get; set; }
public string Pwd { get; set; }
public ObservableCollection<UserVM> Users { get; private set; }
public UserVM(User user)
{
Login = user.Login;
Pwd = user.Pwd;
Users = new ObservableCollection<UserViewModel>(
user.GetUsers().Select(subUser => new UserViewModel(subUser)));
}
}
您可能还希望实现INotifyPropertyChanged,以便视图获得视图模型已更改的通知。