WPF(1)的MVVM的数据驱动学习示例

MVVM

Model:数据模型、View 界面、ViewModel 业务逻辑处理

项目结构

界面数据绑定

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Label Content="输入的值" HorizontalAlignment="Left" Margin="68,52,0,0" VerticalAlignment="Top" Height="35" Width="69"/>

        <!--TextWrapping="Wrap" 内容是否换行-->
        <TextBox Name="txtUserName" Text="{Binding UserName}" HorizontalAlignment="Left" Margin="142,52,0,242.667" TextWrapping="Wrap" Width="123"/>
        <Button Content="SHOW" Click="Button_Click" HorizontalAlignment="Left" Margin="285,55,0,0" VerticalAlignment="Top" Width="78" Height="23"/>
        <!--           控件数据的绑定-->
        <Label Content="{Binding UserName}" HorizontalAlignment="Left" Margin="142,87,0,0" VerticalAlignment="Top"/>
    </Grid>
</Window>

后台代码

using 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.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;
using WpfApp1.ViewModels;

namespace WpfApp1
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            this.Loaded += MainWindow_Loaded;
        }

        private UserViewModel _userViewModel;
        private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            _userViewModel = new UserViewModel();
            //指定界面的数据对上下文对象,XML Binding 绑定值时使用
            this.DataContext = _userViewModel;
            _userViewModel.UserName = "cjhText";
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            _userViewModel.UserName = txtUserName.Text;
        }
    }
}

UserViewModel

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WpfApp1.ViewModels
{
    public class UserViewModel : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        private string _userName;

        public string UserName
        {
            set {
                _userName = value;
                //数据更新 通知界面绑定的地方更新数据
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("UserName"));
            }
            get {
                return _userName;
            }
        }
        //propfull

        private int _sex;
        public int Sex
        {
            get { return _sex; }
            set { _sex = value; }
        }

    }
}

END

相关推荐

  1. WPFMVVM常用框架

    2024-03-11 09:26:01       21 阅读
  2. WPF学习(7) --MVVM模式

    2024-03-11 09:26:01       31 阅读
  3. wpf-MVVM绑定时可能出现内存泄漏问题

    2024-03-11 09:26:01       63 阅读
  4. WPF MVVM模式与DI:高度兼容结构

    2024-03-11 09:26:01       69 阅读
  5. WPF 结合 MVVM模式下SqlSugar ORM框架使用

    2024-03-11 09:26:01       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 09:26:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 09:26:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 09:26:01       82 阅读
  4. Python语言-面向对象

    2024-03-11 09:26:01       91 阅读

热门阅读

  1. K8S集群

    2024-03-11 09:26:01       44 阅读
  2. Spring Bean 生成流程详细解析

    2024-03-11 09:26:01       47 阅读
  3. 微信小程序修改placeholder样式

    2024-03-11 09:26:01       41 阅读
  4. Node.js_会话控制

    2024-03-11 09:26:01       41 阅读
  5. 《BERT基础教程:Transformer大模型实战》读书笔记

    2024-03-11 09:26:01       37 阅读
  6. 流量分析-webshell管理工具

    2024-03-11 09:26:01       44 阅读
  7. go gin中间件关于 c.next()、c.abort()和return的使用

    2024-03-11 09:26:01       49 阅读
  8. Docker基础—CentOS中Docker安装部署

    2024-03-11 09:26:01       47 阅读
  9. neo4j

    2024-03-11 09:26:01       45 阅读
  10. RabbitMQ

    RabbitMQ

    2024-03-11 09:26:01      35 阅读