如何在登录页面上实现ICommand

时间:2014-09-02 09:10:15

标签: c# wpf mvvm

我对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属性?

1 个答案:

答案 0 :(得分:0)

您需要创建/获取名为DelegateCommand的公共MVVM模式基类。基本上,此类实现ICommand允许您为Execute()接口中的CanExecute()ICommand方法指定委托。

PRISM库包含它的实现,Kent Boogaart's blog

也是如此