我对MVVM很新,我最近发现按钮也可以绑定到类中的函数。
所以我所做的基本上是使用Linq使用后面代码中的click事件验证用户名和密码,如下所示:
private void Login_Click(object sender, RoutedEventArgs e)
{
var user = from u in MyDBDataSet.logins
where u.username == usernameTextBox.Text
&& u.password == passwordPasswordBox.Password
select u;
if (user.Any())
{
MessageBox.Show("Success, Credentials Found");
}
else
{
MessageBox.Show("Error, Nothing Found");
}
}
为了让我使用MVVM模式,我最终不得不做这样的事情吗?
<!-- Create the binding in the xaml />
<Button Content="Login" Command="{Binding login}"/>
在
后面的代码中设置数据上下文public login()
{
InitializeComponent();
// LoginSQL is the View Model class
LoginSql = new SQL.content.authentication.login.loginSQL();
DataContext = LoginSql;
}
在View Model中,创建属性以将按钮绑定到。
private ICommand _login;
public ICommand login
{
get;
set;
}
看到这是我对它的了解非常有限的地方。从这里环顾四周,我理解我需要告诉它在哪些情况下它可以执行,或者当应用程序运行时按钮会变灰,我还应该告诉它在执行时该怎么做。
目前还有什么让我失望的。如何连接方法以将用户登录到ICommand属性?
答案 0 :(得分:0)
您需要创建/获取名为DelegateCommand
的公共MVVM模式基类。基本上,此类实现ICommand
允许您为Execute()
接口中的CanExecute()
和ICommand
方法指定委托。
PRISM库包含它的实现,Kent Boogaart's blog
也是如此