WPF使用Microsoft.Toolkit.Mvvm框架记录

这篇具有很好参考价值的文章主要介绍了WPF使用Microsoft.Toolkit.Mvvm框架记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

为了解决WPF UI与程序逻辑之间得到解耦,所以使用Microsoft.Toolkit.Mvvm框架来实现,说真的开发逻辑真的有些不适应,不过理解就好。框架大体支持ICommand、IMessenger等。

什么是MVVM?

MVVM是Model-View-ViewModel的简写。它本质上就是MVC (Model-View- Controller)的改进版。即模型-视图-视图模型。分别定义如下:

  • 【模型】指的是后端传递的数据。
  • 【视图】指的是所看到的页面。
  • 【视图模型】mvvm模式的核心,它是连接view和model的桥梁。它有两个方向:
    • 一是将【模型】转化成【视图】,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。
    • 二是将【视图】转化成【模型】,即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件监听。这两个方向都实现的,我们称之为数据的双向绑定。

MVVM示意图如下所示

microsoft.toolkit.mvvm,wpf,microsoft,ui,c#

一、导入包

microsoft.toolkit.mvvm,wpf,microsoft,ui,c#

 microsoft.toolkit.mvvm,wpf,microsoft,ui,c#

 二、使用框架实现

microsoft.toolkit.mvvm,wpf,microsoft,ui,c#

<Window x:Class="myMVVM.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:myMVVM"
        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>

microsoft.toolkit.mvvm,wpf,microsoft,ui,c#

using Microsoft.Toolkit.Mvvm.Messaging;
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 myMVVM
{
    /// <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);
            });
        }

    }
}

 microsoft.toolkit.mvvm,wpf,microsoft,ui,c#

using Microsoft.Toolkit.Mvvm.ComponentModel;
using Microsoft.Toolkit.Mvvm.Input;
using Microsoft.Toolkit.Mvvm.Messaging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace myMVVM
{
    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");
        }
    }
}

microsoft.toolkit.mvvm,wpf,microsoft,ui,c#

 microsoft.toolkit.mvvm,wpf,microsoft,ui,c#

总结:

这样当我们的业务代码逻辑变更时就不用考虑ui的修改,需要习惯这个逻辑。文章来源地址https://www.toymoban.com/news/detail-542298.html

到了这里,关于WPF使用Microsoft.Toolkit.Mvvm框架记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用 .NET 和 Teams Toolkit 构建 AI 机器人、扩展 Copilot for Microsoft 365 以及更多

    作者:Ayca Bas 排版:Alan Wang Teams Toolkit for Visual Studio 帮助 .NET 开发人员为 Microsoft Teams 构建、调试和发布应用程序。我们很高兴向大家宣布,Teams Toolkit for Visual Studio 2022 17.9 版本为 .NET 开发人员提供了许多令人兴奋的新功能,例如新的 AI Bot 模板、Teams Bot 测试工具、自适应卡

    2024年04月15日
    浏览(36)
  • 探索MVVM Toolkit:简化.NET应用开发,构建高效MVVM架构

      概述: MVVM Toolkit是.NET平台的强大工具包,旨在简化MVVM应用程序开发。提供基础功能如ViewModelBase和RelayCommand,支持数据绑定和命令绑定,通过Messenger实现消息订阅发布。其高级功能包括ObservableObject和WeakEventListener,助力开发人员构建可维护、高性能的MVVM应用,提升用户体

    2024年02月20日
    浏览(47)
  • WPF Extended.Wpf.Toolkit 加载界面

    1、NuGet 中安装 Extended.Wpf.Toolkit 。 2、在MainWindow.xaml中添加xmlns:tk=\\\"http://schemas.xceed.com/wpf/xaml/toolkit\\\" 。 MainWindow.xaml 代码如下。 Window x:Class=\\\"WPF_Extended_Wpf_Toolkit_Loading.MainWindow\\\"         xmlns=\\\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\\\"         xmlns:x=\\\"http://schemas.microsoft.com/winfx/

    2024年04月28日
    浏览(42)
  • WPF .Net6框架下, 使用 Microsoft.Xaml.Behaviors.Wpf 的Interaction.Triggers特性,实现ComboBox 在展开时,触发刷新列表内容的动作

    ComboBox 在WPF中是常见的控件。 一般情况下,在绑定好数据源后,其内容是固定的。 当然,你也可以实时刷新,但这将带来较高的资源消耗。 因此有个折中的办法: 只在它在展开时,自动更新列表内容。 当前文章基于 .Net6框架,其他框架不适用。 这个是用于平替winform某个组

    2024年02月09日
    浏览(59)
  • WPF编程--helix-toolkit 官方SimpleDemo

    视频:  WPF helix-toolkit 官方SimpleDemo_哔哩哔哩_bilibili 源码: https://github.com/liugang198409/WpfDemo/tree/master/3DSimpleDemo Visual Studio 2019 + .NET Framework 4.8.1 HelixToolkit HelixToolkit.wpf  

    2024年02月11日
    浏览(35)
  • 探秘Xceed WPF Toolkit:一个强大且灵活的UI开发利器

    项目地址:https://gitcode.com/xceedsoftware/wpftoolkit 如果你在寻找一款能够帮助你在Windows Presentation Foundation (WPF) 平台上快速构建美观、功能丰富的用户界面的工具包,那么Xceed WPF Toolkit绝对值得你关注。这款开源项目提供了大量预构建的控件和组件,旨在简化你的开发流程,提升应

    2024年03月27日
    浏览(42)
  • WPF 使用MVVM框架创建一个项目

    步骤如下: 1、打开Visual Studio 2017(或其他版本),选择新建项目 2、选择WPF应用(.Net Framework),同时给项目命名,并选择项目存放路径,最后点击确定 3、右键点击解决方案名称,点击“管理NuGet程序包”,点击浏览,在输入框中输入mvvmlight,点击MvvmLight进行安装,安装过程

    2024年02月05日
    浏览(66)
  • Microsoft.Xaml.Behaviors.Wpf 的使用

    System.Windows.Interactivity.WPF这个已经过时,可以使用 Microsoft.Xaml.Behaviors.Wpf ,基本使用查不多,

    2024年02月13日
    浏览(51)
  • 【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入

    前言:在C/S架构上,WPF无疑已经是“桌面一霸”了。在.NET生态环境中,很多小伙伴还在使用Winform开发C/S架构的桌面应用。但是WPF也有很多年的历史了,并且基于MVVM的开发模式,受到了很多开发者的喜爱。 并且随着工业化的进展,以及几年前微软对.NET平台的开源,国内大多

    2024年02月06日
    浏览(63)
  • 【自动化】在WPF应用程序中使用MVVM框架实现Modbus协议通信

    Modbus是一种广泛应用于工业领域的通信协议,主要用于设备间的数据交换。在WPF应用程序中,我们可以使用MVVM(Model-View-ViewModel)框架来实现Modbus协议的通信。本文将详细介绍如何实现这一功能。 为了在WPF应用程序中实现Modbus协议通信,我们需要安装一些第三方库。可以使用

    2024年03月22日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包