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

wpf依赖注入驱动的 MVVM实现(含免费源代码demo)

bg:学avalonia,发现通过di也可以实现绑定,可以代替Prism框架的一个功能(Prism看到wpf的挺久没更新了)。

1、首先Nuget中安装tookit和di

2、View和ViewModel正常写

3、创建ServiceLocator,构造函数注册viewModel后就可以从容器中获取

using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace wpf_test
{public class ServiceLocator{private readonly IServiceProvider _serviceProvider;// 从容器中获取 MainWindowViewModel 实例public MainWindowViewModel MainWindowViewModel =>_serviceProvider.GetService<MainWindowViewModel>();public ServiceLocator(){var serviceCollection = new ServiceCollection();// 注册ViewModelserviceCollection.AddSingleton<MainWindowViewModel>();// 构造容器_serviceProvider = serviceCollection.BuildServiceProvider();}}
}

4、ViewModel 绑定到 View 的 DataContext 上

DataContext="{Binding MainWindowViewModel, Source={StaticResource ServiceLocator}}"

样例在项目wpf_test中:https://github.com/zzp229/Mvvmdb


文章转载自:

http://enFY2qVS.drnjn.cn
http://QsUHaLHp.drnjn.cn
http://6aWjrwCG.drnjn.cn
http://VYSjGZdT.drnjn.cn
http://cLF9gXud.drnjn.cn
http://JLPwZE0g.drnjn.cn
http://cbVbrUp7.drnjn.cn
http://WuPHeVgY.drnjn.cn
http://Z4XY7kNz.drnjn.cn
http://j05VXqPG.drnjn.cn
http://bzd0PFPw.drnjn.cn
http://xs3egAqt.drnjn.cn
http://o6IVe4Ee.drnjn.cn
http://utUjTHqb.drnjn.cn
http://3ShRx132.drnjn.cn
http://XePuu7Ah.drnjn.cn
http://0VEwflL2.drnjn.cn
http://FikH9is6.drnjn.cn
http://hig0p2Hw.drnjn.cn
http://cwoLeuVR.drnjn.cn
http://SWXowYuM.drnjn.cn
http://rEm1e6Ew.drnjn.cn
http://IMAosoKE.drnjn.cn
http://NSxfdWNV.drnjn.cn
http://mkebYQdC.drnjn.cn
http://l7UGyqtw.drnjn.cn
http://n6DWOLz6.drnjn.cn
http://u55O3sA5.drnjn.cn
http://pBYPUdRa.drnjn.cn
http://ecYRqo45.drnjn.cn
http://www.dtcms.com/a/378985.html

相关文章:

  • Python的f格式
  • 技术视界 | 末端执行器:机器人的“手”,如何赋予机器以生命?
  • 从零开始使用 axum-server 构建 HTTP/HTTPS 服务
  • 简直有毒!索伯ACL撕裂,雷霆四年报销三个新秀!
  • 从 “模板” 到 “场景”,用 C++ 磨透拓扑排序的实战逻辑
  • Kubernetes架构-原理-组件学习总结
  • vue实现打印功能
  • mybatis-plus原理
  • 抓取任务D状态超时事件监控程序的进一步改进
  • Vue3 + Element-Plus 抽屉关闭按钮居中
  • 【ComfyUI】HiDream E1.1 Image Edit带来更高精度的图像与文本编辑
  • MySQL 数据库_01
  • Redis 大 Key 与热 Key:生产环境的风险与解决方案
  • (k8s)Kubernetes 资源控制器关系图
  • 华为云/本地化部署K8S-查看容器日志
  • 探索大语言模型(LLM):Open-WebUI的安装
  • 泛型的学习
  • ESP32 I2S音频总线学习笔记(七):制作一个录音播放器
  • Shell编程:计算Linux主机用户id总和
  • 【Leetcode】高频SQL基础题--196.删除重复的电子邮箱
  • SpreadJS V18.0 Update2 重磅发布:实时协作、视觉定制与效率升级
  • RAG 系统面临间接 Prompt 注入攻击的深层威胁与系统防御策略
  • Go语言开发工具全解析
  • C# Web API Mapster基本使用
  • 图尺匠,一个完全免费的批量图片尺寸调整在线网站
  • PLC控制逻辑进化:机器视觉反馈的自适应调节算法开发经验
  • Python:OpenCV 教程
  • 视频怎么做成 GIF?用 oCam 一键录制 GIF 动画超简单
  • MapEX论文详解
  • ceph/daemon安装部署