根据条件显示用户控件

时间:2015-03-24 07:35:50

标签: c# wpf mvvm

我有一个简单的WPF MVVM应用程序,它由MainWindow和两个UserControl(LoginRegister)和数据库表Users组成。我想将用户控件绑定到主窗口,如果在我的sql表中数据已经存在,则Login用户控件将显示为Register用户控件。

2 个答案:

答案 0 :(得分:1)

如果您查看我对WPF MVVM navigate views问题的回答,您就会找到一种方法在一个地方展示不同的观点。您的问题的答案是要实施类似的设置,您可以在其中显示Login视图或Register视图:

public BaseViewModel ViewModel { get; set; }

...

<DataTemplate DataType="{x:Type ViewModels:LoginViewModel}">
    <Views:LoginView />
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModels:RegisterViewModel}">
    <Views:RegisterView />
</DataTemplate>

当您的主视图模型加载时,您只需要检查数据库中是否有当前用户的任何数据,然后选择显示相关视图......可能是这样的:

ViewModel = IsUsernameRegistered(username) ? new LoginView() : new RegisterView();

答案 1 :(得分:0)

我得到了答案 在 App.xaml.cs 中写下以下方法,并从 App.xaml

中删除 StartupUri =“”
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);

        var con = new SqlConnection
        {
            ConnectionString = "Data Source=localhost;Initial Catalog=demo;User ID=sa;Password=mypassword;"
        };
        con.Open();
        const string chkadmin = "select COUNT(*) from dbo.Registrations";
        var command = new SqlCommand(chkadmin, con);
        int count = Convert.ToInt32(command.ExecuteScalar());
        if (count == 0)
        {
            var reg = new AdminUser(); //this is the Registration window class
            this.MainWindow = reg;
            reg.Show();
        }
        else
        {
            var win = new Home(); //this is the Home window class
            this.MainWindow = win;
            win.Show();
        }
    }