Prism note

简介 Prism是一个用于WPF、Xamarin Forms、WinUI等的MVVM框架,刚刚学习,这里只是个人总结的一些知识点笔记。 IoC IContainerProvider 1 2 3 4 protected override Window CreateShell() { return Container.Resolve<MainWindow>(); } 1 2 3 4 5 6 public void OnInitialized(IContainerProvider containerProvider) { var regionManager = containerProvider.Resolve<IRegionManager>(); var viewA = containerProvider.Resolve<ViewA>(); ... } IContainerRegistry 1 2 3 4 5 6 7 8 9 // App.xaml.cs protected override void RegisterTypes(IContainerRegistry containerRegistry) { containerRegistry.Register<IApplicationCommands, ApplicationCommands>(); containerRegistry.RegisterDialog<NotificationDialog, NotificationDialogViewModel>(); containerRegistry.RegisterForNavigation<Page1>(); containerRegistry.RegisterForNavigation<Page2>(); ... } Module IModule ...

九月 4, 2020 · 3 分钟 · 1338 字

为程序添加通知栏图标

前言 经常看到其它程序在最小化或者窗口隐藏后依旧会在通知栏显示一个托盘图标,像微信、QQ之类的,即使主窗口不显示,程序并不会退出,依旧可以通过托盘图标进行操作。 那么怎样为自己的程序添加一个托盘图标呢?这次就来讲一讲。 ...

三月 25, 2020 · 2 分钟 · 910 字

应用程序单例模式

简介 通常来说,应用程序可以启动任意数目的实例,前提是你的电脑内存足够大,想启动多少都可以。但有时候我们只希望程序同时只有一个实例在运行,应用程序不会重复运行。这就是应用程序的单例模式。 ...

三月 25, 2020 · 3 分钟 · 1415 字

WPF 获取命令行参数

虽然平时很少会用到命令行参数,但有时候可以使用命令行参数来使程序执行不同的行为。 在写控制台程序的时候,我们可以直接得到程序命令行参数。 1 2 3 4 static void Main(string[] args) { // args 就是命令行参数 } 那么如果不是控制台程序如何获取命令行参数呢? ...

三月 25, 2020 · 1 分钟 · 418 字

Stylet 框架体验

简介 Stylet是一个轻量且功能强大的MVVM框架。支持 .NET 4.5+ 和 .NET Core 3.0+。 Stylet的作者也是受到Caliburn.Micro的启发,并且在CM的基础上做了许多改进。所以Stylet使用起来感觉和Caliburn.Micro差别不是很大,但又有着一些不同。 项目结构 这里选择创建一个 .NET Core 的 WPF 项目。 这里项目结构风格和Caliburn.Micro类似,示例源代码 虽然Stylet官方给出的例子里面View和ViewModel是放在一起的,但经过实际使用后发现采用CM的风格也是可以的。依照习惯,将Views和ViewModels分别放在两个文件夹中。 ...

十二月 12, 2019 · 5 分钟 · 2493 字

WPF和MFC进程间传递数据

进程间传递数据的方法 在进程间传递数据也就意味着两个不同的应用程序之间的通讯,大家可能会想到使用消息队列(Message Queue)来作为解决方案,当然这可能是最优解,然而这里我要讲的是另外一种方法,通过Windows的消息机制来传递数据,内容比较硬核。 ...

五月 27, 2019 · 3 分钟 · 1339 字

WPF如何处理Windows消息

发送消息到指定窗口 发送消息相对来说比较简单,这里先讲,这里需要用到两个Windows的API 1 2 3 4 5 6 7 8 9 10 11 12 // 查找指定窗口 [DllImport("User32.dll", EntryPoint = "FindWindow", CharSet = CharSet.Auto)] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); //消息发送API [DllImport("User32.dll", EntryPoint = "SendMessage", CharSet = CharSet.Auto)] public static extern int SendMessage( IntPtr hWnd, // 信息发往的窗口的句柄 int Msg, // 消息ID IntPtr wParam, // 参数1 IntPtr lParam // 参数2 ); FindWindow就是根据窗口的名字去找到相应的窗口句柄,SendMessage就是发送消息到指定窗口了,写过MFC的应该不陌生 ...

五月 26, 2019 · 2 分钟 · 739 字