MVVM示例程序

目录

[一 定义可通知属性](#一 定义可通知属性)

[二 定义前端并绑定](#二 定义前端并绑定)

[三 运行效果](#三 运行效果)


一 定义可通知属性

cs 复制代码
 internal class MainViewModel : ObservableObject
 {
     /// <summary>
     /// 供前端的Command命令Binding调用
     /// </summary>
     public RelayCommand ShowCommand { get; set; }


     public MainViewModel()
     {
         ShowCommand = new RelayCommand(Show);
     }
     private string name;
     public string Name
     {
         get { return name; }
         set { name = value; OnPropertyChanged(); }
     }
     private string title;
     public string Title
     {
         get { return title; }
         set { title = value; OnPropertyChanged(); }
     }

     public void Show()
     {
         Title = "你点击了按钮 this is Title";
         Name = "你点击了按钮  this is Name";
         MessageBox.Show(Name);
         WeakReferenceMessenger.Default.Send<string, string>(Title, "Token1");
     }
 }

二 定义前端并绑定

cs 复制代码
<Window x:Class="ToolKitMVVMTest.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:ToolKitMVVMTest"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <TextBox HorizontalAlignment="Left" Margin="145,52,0,0" TextWrapping="Wrap" Text="{Binding Name}" VerticalAlignment="Top" Width="517" Height="189"/>
        <Button Content="Button" HorizontalAlignment="Left" Margin="245,294,0,0" VerticalAlignment="Top" Height="72" Width="278" Command="{Binding ShowCommand}"/>

    </Grid>


</Window>
cs 复制代码
 /// <summary>
 /// Interaction logic for MainWindow.xaml
 /// </summary>
 public partial class MainWindow : Window
 {
     public MainWindow()
     {
         InitializeComponent();
         this.DataContext = new MainViewModel();
         WeakReferenceMessenger.Default.Register<string, string>(this, "Token1", (s, val) =>
         {
             MessageBox.Show(val);
         });


     }
 }

三 运行效果

相关推荐
初级代码游戏6 分钟前
套路化编程 C# winform 自适应缩放布局
开发语言·c#·winform·自动布局·自动缩放
大空大地20261 小时前
流程控制语句--switch多分支语句使用、while循环语句的使用、do...while语句、for循环
c#
kylezhao20193 小时前
C#序列化与反序列化详细讲解与应用
c#
JQLvopkk3 小时前
C# 实践AI :Visual Studio + VSCode 组合方案
人工智能·c#·visual studio
故事不长丨3 小时前
C#线程同步:lock、Monitor、Mutex原理+用法+实战全解析
开发语言·算法·c#
kingwebo'sZone3 小时前
C#使用Aspose.Words把 word转成图片
前端·c#·word
大空大地20264 小时前
表达式与运算符
c#
User_芊芊君子4 小时前
【分布式训练】CANN SHMEM跨设备内存通信库:构建高效多机多卡训练的关键组件
分布式·深度学习·神经网络·wpf
向上的车轮5 小时前
为什么.NET(C#)转 Java 开发时常常在“吐槽”Java:checked exception
java·c#·.net
微祎_5 小时前
构建一个 Flutter 点击速度测试器:深入解析实时交互、性能度量与响应式 UI 设计
flutter·ui·交互