当前位置: 首页 > 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.lryc.cn/news/597516.html

相关文章:

  • 基于阿里云平台的文章评价模型训练与应用全流程指南
  • nginx.conf配置文件以及指令详解
  • 人工智慧是引擎,人类是方向盘:Vitalik对AI未来的深刻反思
  • 关于SPring基础和Vue的学习
  • rust嵌入式开发零基础入门教程(六)
  • 什么是MySQL 视图
  • 综合实验(3)
  • 暑期自学嵌入式——Day06(C语言阶段)
  • 7月23日星期三今日早报简报微语报早读
  • 51c大模型~合集158
  • Vue 3 组件通信全解析:从 Props 到 Pinia 的深入实践
  • 用 llama.cpp 构建高性能本地 AI 应用:从环境搭建到多工具智能体开发全流程实战
  • Python应用指南:构建和获取全球地铁线路数据及可视化
  • ToBToC的定义与区别
  • 从 XSS 到 Bot 攻击:常见网络攻击防不胜防?雷池 WAF 用全场景防护为网站筑牢安全墙
  • Java中IO多路复用技术详解
  • S段和G段到底有什么区别
  • 基于springboot的乡村旅游在线服务系统/乡村旅游网站
  • 网络--VLAN技术
  • 在 Ubuntu 20.04.5 LTS 系统上安装 Docker CE 26.1.4 完整指南
  • OpenLayers 快速入门(五)Controls 对象
  • centos9 ssh能连接密码不对
  • 电脑32位系统能改64位系统吗
  • GoLand 项目从 0 到 1:第一天 —— 搭建项目基础架构与核心雏形
  • 抖音集团基于Flink的亿级RPS实时计算优化实践
  • 学生信息管理系统 - HTML实现增删改查
  • istio-proxy用哪个端口代理http流量的?
  • Vue 浏览器本地存储
  • 游戏盾 SDK 和游戏盾转发版有什么区别呢?​
  • Docker Desktop 打包Unity WebGL 程序,在Docker 中运行Unity WebGL 程序