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