跳转到主内容
极星编程网:以代码为星,赴技术山海!

C#登录界面代码详细图文教程

目录背景展示代码总结背景MVVM 是一种软件架构模式,用于创建用户界面。它将用户界面(View)、业务逻辑(ViewModel)和数据模型(Model)分离开来,以提高代码的可维护性和可测试性。

MainWindow 类是 View(视图),负责用户界面的呈现和交互,它是用户直接看到和操作的部分。

LoginVM 类是 ViewModel(视图模型),它充当了 View 和 Model 之间的中介,处理了视图与数据模型之间的交互逻辑,以及用户操作的响应逻辑。

LoginModel 类是 Model(模型),它包含了应用程序的数据和业务逻辑,用于存储和处理用户的身份验证信息。

展示

代码LoginModel.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;

namespace WpfApp2{public class LoginModel{private string _UserName;

public string UserName{get { return _UserName; }set{_UserName = value;}}

private string _Password;

public string Password{get { return _Password; }set{_Password = value;}}}}

LoginVM.csusing Sys tem;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Input;

namespace WpfApp2{public class LoginVM : INotifyPropertyChanged{private MainWindow _main;public LoginVM(MainWindow main){_main = main;}

public event PropertyChangedEventHandler PropertyChanged;private void RaisePropetyChanged(string propertyName){PropertyChangedEventHandler handler = PropertyChanged;if (handler != null){handler(this, new PropertyChangedEventArgs(propertyName));}}private LoginModel _LoginM = new LoginModel();

public string UserName{get { return _LoginM.UserName; }set{_LoginM.UserName = value;RaisePropetyChanged("UserName");}}public string Password{get { return _LoginM.Password; }set{_LoginM.Password = value;RaisePropetyChanged("Password");}}///

/// 登录方法/// void Loginfunc(){if (UserName == "wpf" && Password == "666"){MessageBox.Show("OK");Index index = new Index();index.Show();//想办法拿到mainwindow_main.Hide();}else{MessageBox.Show("输入的用户名或密码不正确");UserName = "";Password = "";}}bool CanLoginExecute(){return true;}public ICommand LoginAction{get{return new RelayCommand(Loginfunc,CanLoginExecute);}}}}
MainWindow.xaml

登录MainWindow.xaml.csusing System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;

namespace WpfApp2{///

/// MainWindow.xaml 的交互逻辑/// public partial class MainWindow : Window{LoginVM loginVM;public MainWindow(){InitializeComponent();loginVM = new LoginVM(this);this.DataContext = loginVM;}}}
RelayCommand.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Input;

namespace WpfApp2{public class RelayCommand : ICommand{///

/// 命令是否能够执行/// readonly Func _canExecute;/// /// 命令需要执行的方法/// readonly Action _exexute;

public RelayCommand(Action exexute,Func canExecute){_canExecute = canExecute;_exexute = exexute;}public bool CanExecute(object parameter){if (_canExecute == null){return true;}return _canExecute();}

public void Execute(object parameter){_exexute();}

public event EventHandler CanExecuteChanged{add {if (_canExecute != null){CommandManager.RequerySuggested += value;}}remove{if (_canExecute != null){CommandManager.RequerySuggested -= value;}}}}}自定义按钮CustomButton App.xaml.csCustomButton.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Media;

namespace WpfApp2{public class CustomButton:Button{//依赖属性

public CornerRadius ButtonCornerRadius{get { return (CornerRadius)GetValue(ButtonCornerRadiusProperty); }set { SetValue(ButtonCornerRadiusProperty, value); }}

// Using a DependencyProperty as the backing store for ButtonCornerRadius. This enables animation, styling, binding, etc...

public static readonly DependencyProperty ButtonCornerRadiusProperty =DependencyProperty.Register("ButtonCornerRadius", typeof(CornerRadius), typeof(CustomButton));

public Brush BackgroundHover{get { return (Brush)GetValue(BackgroundHoverProperty); }set { SetValue(BackgroundHoverProperty, value); }}

// Using a DependencyProperty as the backing store for BackgroundHover. This enables animation, styling, binding, etc...

public static readonly DependencyProperty BackgroundHoverProperty =DependencyProperty.Register("BackgroundHover", typeof(Brush), typeof(CustomButton));

public Brush BackgroundPressed{get { return (Brush)GetValue(BackgroundPressedProperty); }set { SetValue(BackgroundPressedProperty, value); }}

// Using a DependencyProperty as the backing store for BackgroundPressed. This enables animation, styling, binding, etc...

public static readonly DependencyProperty BackgroundPressedProperty =DependencyProperty.Register("BackgroundPressed", typeof(Brush), typeof(CustomButton));}}数据字典CustombuttonStyles.xaml总结到此这篇关于C#登录界面代码的文章就介绍到这了,更多相关C#登录界面代码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:c#调用存储过程实现登录界面详解C#实现简单的登录界面C# winform主界面打开并关闭登录界面的方法C# WinForm 登录界面的图片验证码(区分大小写+不区分大小写) C# WinForm制作登录界面的实现步骤

相关文章