当前位置: 首页 > news >正文

C#与WPF使用mvvm简单案例点击按钮触发弹窗

创建WPF工程文件,以mvvm模式更改页面名称,及创建model类

注意页面的命名以View结尾,模型类以ViewModel结尾

安装 Prism.Core

页面添加一个按钮

<Window x:Class="MVVMDemo.Views.MainWindowView"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:MVVMDemo"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid><Border><Button Content="测试按钮" Command="{Binding TestCommand}"  CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=Window}}" Width="90" Height="50" FontSize="20" /></Border></Grid>
</Window>

页面后台代码

using MVVMDemo.ViewModels;
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;namespace MVVMDemo.Views
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindowView : Window{public MainWindowView(){InitializeComponent();//绑定数据源DataContext = new MainWindowViewModel();}}
}

MainWindowViewModel代码

using Prism.Commands;
using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;namespace MVVMDemo.ViewModels
{public class MainWindowViewModel : BindableBase{//测试按钮命令public ICommand TestCommand{get => new DelegateCommand(Test);}private void Test(){MessageBox.Show("有效触发", "测试mvvm");}}
}

运行效果

http://www.dtcms.com/a/293814.html

相关文章:

  • 【Spring Cloud Gateway 实战系列】进阶篇:过滤器高级用法、动态路由配置与性能优化
  • 2025年股指期货期权交割日一览表
  • 第五章 W55MH32 UDP示例
  • 算法笔记之归并排序
  • 分享鸢尾花数据集:iris.csv,以及简单数据分析与分类预测示例(决策树)
  • Deep learning--模型压缩的五种方法
  • 沪银本周想法
  • Spring DeferredResult 实现长轮询
  • Http证书体系及证书加密流程(通信流程)
  • 第九章 W55MH32 HTTP Server示例
  • ARM入门学习方法分享
  • 2025年华为HCIA人工智能认证发展前景如何?客观分析!
  • 7月23日华为机考真题第一题100分
  • LazyVim 加载顺序
  • react18更新哪些东西
  • 5G时代PCB设计新突破:猎板三大创新技术重塑高频信号完整性
  • ES6 标签模板:前端框架的灵活利器
  • 2025年电赛--电源题赛前押题
  • LeetCode 460:LFU 缓存
  • LeetCode热题100--383
  • 时序数据库主流产品概览
  • 基于单片机排队叫号系统设计
  • 自动化运维:从脚本到DevOps的演进
  • Win10_Qt6_C++_YOLO推理 -(1)MingW-opencv编译
  • 人工智能——Opencv图像色彩空间转换、灰度实验、图像二值化处理、仿射变化
  • 腾讯iOA:企业软件合规与安全的免费守护者
  • 建数仓该选大SQL还是可视化ETL平台?
  • kotlin基础【2】
  • kettle 8.2 ETL项目【一、初始化数据库及介绍】
  • UniappDay01