首页 > 其他分享 >WPF的MVVM的数据驱动学习示例

WPF的MVVM的数据驱动学习示例

时间:2023-01-26 22:12:43浏览次数:46  
标签:MVVM 示例 Windows System private MainWindow using WPF public

项目结构

 

 

界面数据绑定

<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; }
        }

    }
}

 

标签:MVVM,示例,Windows,System,private,MainWindow,using,WPF,public
From: https://www.cnblogs.com/stevenchen2016/p/17068306.html

相关文章

  • WPF的APP生命周期以及全局异常捕获
    WPF的APP生命周期以及全局异常捕获APP生命周期wpf项目目录中有一个App.xaml.cs文件,该文件中App是一个partical类,与之对应的另一partical部分在App.g.i.cs文件中,该文件是......
  • ifc4x3 附录E示例-地理参考-1
    ifc4x3附录E示例-地理参考-1示例概述意图此场景封装了使用正确地理参考设置的模型。 它将项目的基点放在慕尼黑技术大学的入口处,将坐标轴与东部和北部对齐,并将项目......
  • WPF的APP生命周期以及全局异常捕获
    WPF的APP生命周期以及全局异常捕获APP生命周期wpf项目目录中有一个App.xaml.cs文件,该文件中App是一个partical类,与之对应的另一partical部分在App.g.i.cs文件中,该文件是在......
  • WPF-3D图形
    WPF-3D图形WPF的3D功能可以在不编写任何c#代码的情况下进行绘制,只需要使用xaml即可完成3D图形的渲染。本文主要讲述了WPF-3D中的关键概念,以及常用到的命中测试、2d控件如......
  • SpringBoot 定时任务示例
    示例#ScheduledTaskService.javapackagecom.ln.myboot3.schedule;importorg.springframework.scheduling.annotation.Scheduled;importorg.springframework.ster......
  • Rust 中 HashSet 的基础用法示例
    代码:usestd::collections::{HashSet,HashMap};fnmain(){letmutset:HashSet<i32>=HashSet::new();set.insert(1);set.insert(2);//插入元素......
  • Rust中 HashMap 的基础用法示例
    代码:usestd::collections::HashMap;fnmain(){//创建一个hash-map,key为字符串类型,value为无符号整数类型letmutmap:HashMap<&str,u32>=HashMap::new();......
  • Hadoop MapReduce介绍、官方示例及执行流程Apache Hadoop概述
    Hadoop离线是大数据生态圈的核心与基石,是整个大数据开发的入门。本次分享内容让初学者能高效、快捷掌握Hadoop必备知识,大大缩短Hadoop离线阶段学习时间,下面一起开始今天的学......
  • 【Azure 存储服务】.NET7.0 示例代码之上传大文件到Azure Storage Blob (一)
    问题描述在使用Azure的存储服务时候,如果上传的文件大于了100MB,1GB的情况下,如何上传呢? 问题解答使用Azure存储服务时,如果要上传文件到AzureBlob,有很多种工具可以实现。如:A......
  • Vue3中的异步组件defineAsyncComponentAPI的用法示例
    介绍当我们的项目达到一定的规模时,对于某些组件来说,我们并不希望一开始全部加载,而是需要的时候进行加载;这样的做得目的可以很好的提高用户体验。为了实现这个功能,Vue3中为我......