WPF 界面变量绑定(通知界面变化)

1、继承属性变化接口

csharp 复制代码
public partial class MainWindow : Window, INotifyPropertyChanged
{
		// 通知界面属性发生变化
        public event PropertyChangedEventHandler PropertyChanged;
        private void RaisePropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if(handler != null) 
                handler(this, new PropertyChangedEventArgs(propertyName));
        }
}

2.创建被绑定属性

csharp 复制代码
        // 创建被绑定的属性
        private string _userName;
        public string UserName
        {
            get { return _userName; }
            set { _userName = value;
                // 通知界面 属性发生变化
                RaisePropertyChanged("UserName");
            }
        }

3.界面绑定属性

html 复制代码
            <!-- 绑定代码中的属性  UserName -->
            <TextBox Text="{Binding UserName}" Grid.Row="0" Grid.Column="1" Margin="2"/>

4.界面数据关联属性

csharp 复制代码
        public MainWindow()
        {
            InitializeComponent();

            // 为界面设置 绑定数据
            this.DataContext = this;
        }

5.使用绑定属性

csharp 复制代码
// 获取界面输入
if (UserName == "WPF" && passWord == "123")
{   // 弹出一个新的界面 ctrl+ k + d
    //MessageBox.Show("OK");
    IndexWindow indexWindow = new IndexWindow();
    indexWindow.Show();

    // 隐藏登录界面
    this.Hide();
}
else
{// 警告框
    MessageBox.Show("输入的用户名或密码不正确");
    //txtUserName.Text = "";
    // 清空界面数据
    UserName = "";
    txtPassword.Text = "";
}

完整代码

csharp 复制代码
using 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 WPF_LoginUI
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window, INotifyPropertyChanged
    {
        public MainWindow()
        {
            InitializeComponent();

            // 为界面设置 绑定数据
            this.DataContext = this;
        }

        // 创建被绑定的属性
        private string _userName;

        public string UserName
        {
            get { return _userName; }
            set { _userName = value;
                // 通知界面 属性发生变化
                RaisePropertyChanged("UserName");
            }
        }

        // 被用来 界面绑定的属性
        //public string UserName { get; set; } = "WPF";

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

        /// <summary>
        /// 按钮 登录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnLogin_Click(object sender, RoutedEventArgs e)
        {
            //string userName = txtUserName.Text;
            string passWord = txtPassword.Text;

            if (UserName == "WPF" && passWord == "123")
            {   // 弹出一个新的界面 ctrl+ k + d
                //MessageBox.Show("OK");
                IndexWindow indexWindow = new IndexWindow();
                indexWindow.Show();

                // 隐藏登录界面
                this.Hide();
            }
            else
            {// 警告框
                MessageBox.Show("输入的用户名或密码不正确");
                //txtUserName.Text = "";
                UserName = "";
                txtPassword.Text = "";
            }
        }
    }
}
相关推荐
李高钢16 小时前
WPF MVVM Light 入门:从零到Hello World
c#·wpf
李高钢18 小时前
WPF MVVM Light(三):RelayCommand 命令与 Messenger 消息
前端·c#·wpf
SamChan902 天前
FastAPI+Celery+Redis搭建企业级PDF翻译异步任务系统
redis·后端·python·pdf·wpf·fastapi
李高钢2 天前
C# WPF Prism 进阶(三):导航(Navigation)深入
开发语言·c#·wpf
李高钢3 天前
C# WPF 的 Prism 框架入门:核心概念与一个完整示例
开发语言·c#·wpf
SamChan903 天前
用Playwright端到端测试PDF翻译功能:Web自动化测试实战
前端·python·ai·pdf·wpf
Now喔3 天前
WPF动画
wpf
FuckPatience5 天前
WPF 给一个界面上的按钮应用同一种样式
wpf
Polevne6 天前
WPF\MAUI\Avalonia Dispatcher
wpf
Ares-Wang6 天前
wpf 图表制作 LiveCharts
wpf