【发布时间】:2018-11-16 15:00:54
【问题描述】:
我不确定我是否完全理解了 MVVM 设计背后的想法,特别是关于从 viewmodel -> view 传递数据,反之亦然。
例如,假设我有一个具有这些属性的模型(尽可能简单):
public class User{
public string username {get; set;}
public string password {get; set;}
}
这是我的ViewModel,它有一个登录方法:
// dependency injection
private readonly Context _context;
public constructor(Context context)
{
_context = context;
}
// my method to verify login:
public async Task<bool> login(string username, string password)
{
// fetching data
var user = await _context.Users.FirstOrDefaultAsync(p => p.username== username&& p.Password == password);
return (user != null);
}
所以我的问题是:我应该如何将这些方法传递给视图类?
我通常只是在button_click() 中执行此操作:
Var viewmodel = new Viewmodels.User();
login_state = viewmodel.login(email, password);
但是我只是觉得这不是正确的方法,因为它会使设计非常紧密地耦合。我应该如何实现它?
【问题讨论】:
-
你可以使用Commands。
-
@Schwarzie2478 我已经检查了所有答案。我不太了解他们
-
hmm,您不应该在事件处理代码中创建视图模型。您应该在视图的构造函数中创建一个,或者使用 IOC 容器和类似 MVVM 的东西将视图链接到某个视图模型。