一、Wpf-MVVM的PasswordBox 控件,输入密码时是隐藏文本的,如图
二、首先在PasswordBox控件里面给一个x:Name值,接下来就直接在登录事件里面写。
三、登录事件
1.在事件里面绑定窗口值
2.在ViewModel里面声明一个密码框的变量,
public System.Windows.Controls.PasswordBox Box;
3.登录事件
public void Login(Window window)
{
try
{
Window window1 = new Window();
window1 = window;
//获取账号
string UN = UserName;
//获取密码框的name值,然后再获取页面密码//获取name值,转换PasswordBox
Box = window1.FindName("Password") as System.Windows.Controls.PasswordBox;
string UP = Box.Password.Trim();
//判断账号和密码不能为空
if (!string.IsNullOrEmpty(UN) && !string.IsNullOrEmpty(UP))
{
//从数据查询数据判断与页面是否一致
var login = (from tbstaff in myModels.S_Staff
where tbstaff.ANun == UN && tbstaff.password == UP
select new
{
staffID = tbstaff.staffID,
ANun = tbstaff.ANun,
password = tbstaff.password,//密码
position = tbstaff.position,//职务
name = tbstaff.name,//姓名
jurisdictionID = tbstaff.JurisdictionID//权限ID
}).Single();
//获取登录的员工ID
int StaffID = login.staffID;
//判断ID是否为0
if (StaffID >0)
{
//5.打开主页面关闭登录页面
//实例化主页面窗口
MainWindow myMainWindow = new MainWindow();
//给主页面对应的viewmodel传值
var mainWindowViewModel = (myMainWindow.DataContext as MainViewModel);
//传值(id)
mainWindowViewModel.StaffID = StaffID;
myMainWindow.Show();
//关闭窗口
window.Close();
}
else
{
MessageBox.Show("登录失败");
}
}
else
{
MessageBox.Show("数据不能为空");
}
}
catch (Exception e)
{
Debug.WriteLine(e);
}
}
4.主页面的登录数据,也是过登录事件传值,比如上面的传员工ID,然后在主页面的加载事件里根据传过来的ID查询出需要的字段,
//加载
public void Loaded(Window wd)
{
window = wd;
//获取系统时间
string now = DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss");
time = now;
//查询数据
var staff = (from tbStaff in myModels.S_Staff
where tbStaff.staffID == StaffID
select new
{
staffID = tbStaff.staffID,
ANun = tbStaff.ANun,
password = tbStaff.password,//密码
position = tbStaff.position,//职务
name = tbStaff.name,//姓名
}).Single();
ANun = staff.ANun;//工号
position = staff.position;//职务
}