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 = "";
            }
        }
    }
}
相关推荐
△曉風殘月〆12 小时前
在WPF中保存控件内容为图片
wpf
芝麻科技13 小时前
Wpf使用NLog将日志输出到LogViewer
wpf·prism
△曉風殘月〆1 天前
WPF颜色(SolidColorBrush)和Win32颜色(COLOREF)互转的方法
wpf·win32·solidcolorbrush·colorref
shanshan20991 天前
上位机系统架构 | 如何设计一个高效的多相机管理系统
c#·wpf·相机
充值内卷2 天前
WPF入门教学四 WPF控件概述
windows·ui·wpf
小白3 天前
WPF自定义Dialog模板,内容用不同的Page填充
wpf
Crazy Struggle3 天前
C# + WPF 音频播放器 界面优雅,体验良好
c#·wpf·音频播放器·本地播放器
James.TCG3 天前
WPF动画
wpf
He BianGu3 天前
笔记:简要介绍WPF中FormattedText是什么,主要有什么功能
笔记·c#·wpf
脚步的影子4 天前
.NET 6.0 + WPF 使用 Prism 框架实现导航
.net·wpf