wpf .net 8 使用mvvm指南

news/2025/10/5 18:51:22/文章来源:https://www.cnblogs.com/igary/p/19126891

xaml:

<UserControl x:Class="WpfApp1.Controls.GWEditControl.GWEditCotrol"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
             xmlns:local="clr-namespace:WpfApp1.Controls.GWEditControl"
             mc:Ignorable="d"
             d:DesignHeight="450" d:DesignWidth="800">
    <Grid>
        <Button Content="{Binding UserDemo}">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="MouseDown">
                    <i:InvokeCommandAction Command="{Binding TestClickCommand}" />
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </Button>
    </Grid>
</UserControl>

 

ViewModel类:

using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace WpfApp1.Controls.GWEditControl
{
    public partial class GWEditControlViewModel:ObservableObject
    {
        /// <summary>
        /// 用户备注
        /// </summary>
        [ObservableProperty]
        private string? userDemo;

        /// <summary>
        /// 绑定的事件
        /// </summary>
        [RelayCommand]
        private void TestClick()
        {
            MessageBox.Show("test");
        }
    }
}

窗口代码类(把界面和viewmodel关联起来):

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 WpfApp1.Controls.GWEditControl
{
    /// <summary>
    /// GWEditCotrol.xaml 的交互逻辑
    /// </summary>
    public partial class GWEditCotrol : UserControl
    {
        public GWEditCotrol()
        {
            InitializeComponent();
            this.DataContext = new GWEditControlViewModel();
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

office办公软件

常见的办公软件就是微软的office和wps,微软的office太过臃肿,随随便便就是好几个G,国产WPS简直就是垃圾,广告多,还时不时的更新,然后被迫安装一堆软件,下面介绍一个还不错的开源,免费,无广告的办公软件。 它就…

2025.10.4训练记录

上午noip模拟 T1 题目关键在于:中奖数字的最后两位必须两两不同。 于是可以把每个后两位的状态看成『一种数』。 依次考虑每种数作为一、二、三等奖对答案造成的贡献。 于是可以 dp,状态为 \(f[i][0/1][0/1][0/1/2/3…

2025年微信小程序开发:AR/VR与电商的最新案例 - 指南

2025年微信小程序开发:AR/VR与电商的最新案例 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

2048小游戏C++板来啦! - 指南

2048小游戏C++板来啦! - 指南2025-10-05 18:44 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importan…

重庆 网站 建设 公司网络商城需要什么资质

对话框 消息对话框、字体对话框、颜色对话框、文件对话框 消息对话框 消息对话框提供了一个模态的对话框&#xff0c;用来提示用户信息&#xff0c;或者询问用户问题并得到回答 基于属性版本的API 使用该类调用构造函数&#xff0c;构造一个类对象调用成员函数exec进入执行…

详细介绍:vue+cesium示例:3Dtiles三维模型高度调整(附源码下载)

详细介绍:vue+cesium示例:3Dtiles三维模型高度调整(附源码下载)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

st表 + 变形的djs (好题

st表 + 变形的djs (好题https://codeforces.com/gym/105386/problem/J #include <bits/stdc++.h>using i64 = long long;struct STList {int n, k;std::vector<std::vector<int>> Max;STList() {}S…

1.什么是node.js、npm、vue - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

科技园区建设网站的意义个人网站名字

【Rust】001-基础语法&#xff1a;变量声明及数据类型 文章目录 【Rust】001-基础语法&#xff1a;变量声明及数据类型一、概述1、学习起源2、依托课程 二、入门程序1、Hello World2、交互程序代码演示执行结果 3、继续上难度&#xff1a;访问链接并打印响应依赖代码执行命令 三…

网站建设的常见技术有哪些怎么查询在建工程

useMemo和useCallback的用法以及区别 useCallback 和 useMemo 是 React 中的两个钩子函数&#xff0c;它们的目标都是优化性能&#xff0c;但它们在用途和使用场景上有一些区别。 useCallback useCallback 用于缓存一个回调函数&#xff0c;并在依赖项发生变化时&#xff0c…

深圳网站设计是什么简单网站搭建

1.认识二分查找 二分查找的时间复杂度:O(logN) 二分查找属于算法中耳熟能详的一类&#xff0c;通常的我们会说只有数组有序才可以使用二分查找&#xff0c;不过这种说法并不完全正确&#xff0c;只要数据具有"二段性"就可以使用二分查找&#xff0c;即我们可以找出一…

在wpf .net 8项目中使用materialDesign 4 以上版本的的注意事项

在wpf .net 8项目中使用materialDesign 4 以上版本的的注意事项新建.net8 wpf项目 nuget添加MaterialDesignThemes引用,现在可以用5.2.1,注意:可以只有添加这个包即可,因为新nuget会自动依赖引用MaterialDesignCol…

李臻20242817_安全文件传输系统项目报告_第14周 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

一站多通怎么做网站饲料行业建设网站方案设计免费下载ppt

学习java之电脑的常用快捷键和DOS窗口下的常用命令电脑一些常用的快捷键win快捷键&#xff1a;单独按Windows&#xff1a;显示或隐藏 “开始”功能表WindowsBREAK&#xff1a;显示“系统属性” 对话框WindowsD&#xff1a;显示桌面或恢复桌面WindowsM&#xff1a;最小化所有窗口…

做网站套餐enjooy wordpress

本机文件夹同步到云服务器 内容精选换一换华为云帮助中心&#xff0c;为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档&#xff0c;帮助您快速上手使用华为云服务。本节操作介绍本地MacOS系统主机通过安装“Microsoft Rem…

长沙做网站 必看 磐石网络网店设计理念

随着我国人民精神文化与物质生活的不断升级&#xff0c;定制真人手办摆件的需求变得广泛&#xff0c;易模推出易模真人手办定制服务&#xff08;小程序&#xff09;&#xff0c;帮助市场合作伙伴能够以全线上、手机端形式为用户制作真人手办&#xff0c;“全线上”的内涵包括手…

洛谷P14120 题解 - lemon

思维路径 容易注意到,这个赛制对于 BaoBao 非常不友好,因为 DreamGrid 可以通过他出的牌来决定自己的出牌。也就是说,我们不需要关注 BaoBao 的出牌顺序,只需要关注他出的每一张牌对应 DreamGrid 出的牌即可。 对于…

通州网站建设服务做网站建设销售

主要实现的那种光晕效果&#xff1a;中间亮&#xff0c;四周逐渐变淡的。 这边有三种发光效果&#xff0c;先上效果图。 第一种、圆形发光体 实现代码&#xff1a;新建shape_light.xml&#xff0c;导入以下代码。使用时&#xff0c;直接给view设置为background。 <?xml …

请网站制作公司费用网站制作与网站建设pdf

Navicat创建数据库表 、导入sql文件&#xff0c;生成表结构 1.打开Navicat2.远程连接mysql连接3.创建数据库4.导入sql文件5.生成表结构 1.打开Navicat 2.远程连接mysql连接 3.创建数据库 4.导入sql文件 导入源代码中的sql文件 5.生成表结构