首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【愚公系列】2023年02月 .NET CORE工具案例-Caliburn.Micro的使用基于WPF的改造的MVVM案例

文章目录 前言 1.Caliburn.Micro是什么 2.Caliburn.Micro的主要功能 一、Caliburn.Micro的使用基于WPF的改造 1.项目介绍 2.安装软件包 3.改造App...2.Caliburn.Micro的主要功能 Caliburn.Micro是一个小型MVVM框架,主要提供了以下功能: 简化MVVM模式的实施 视图绑定 统一方式的消息机制 基于事件和命令的行为触发 支持视图导航...Caliburn.Micro 官网:https://caliburnmicro.com/ 一、Caliburn.Micro的使用基于WPF的改造 1.项目介绍 HelloWorld:框架的搭建...、容器注入相关 HelloWorld.Core;放置数据模型,即mvvm中的M HelloWorld.ViewModels:模型视图,即VM HelloWorld.Views:V,即视图 本项目是基于....CM的VM和V的匹配规则 //1.默认的规则是是:视图以View结尾、视图模型以ViewModel结尾 //2.实际规则是视图模型以VM结尾,视图只要前缀和视图模型的一致就行

1.1K20

C# WPF MVVM开发框架Caliburn.Micro入门介绍①

MVVM中的View Model在Model和View之间扮演着值转换器的角色,把Model的数据交给View去绑定,把View的数据提交给Model;同时也要实现mediator设计模式,成为View...当触发器发生时,“消息”在元素树中冒泡,寻找能够调用指定方法的Action.Target(处理程序)。这就是为什么我们称之为信息。动作消息的“冒泡”特性非常强大,非常有用,尤其是在主/细节场景中。...以代码为中心的开发人员会很高兴知道Caliburn.Micro支持非常简洁的语法,通过一个名为Message.Attach的特殊附加属性来声明这些ActionMessages。...此外,通过在Xaml中附加View.Context,我们支持同一视图模型上的多个视图。...只需向它传递一个VM实例,它就会找到视图,必要时将其包装在窗口中,应用您配置的所有约定并显示窗口。

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C# WPF MVVM开发框架Caliburn.Micro Screens, Conductors 和 Composition⑦

    这些屏幕中的每一个都有自定义的激活/停用逻辑,使其能够设置/拆除应用程序工具栏,以便它们根据活动屏幕提供适当的图标。在简单的场景中,ScreenActivator通常与Screen是同一个类。...OnActivate–覆盖此方法以添加每次激活屏幕时应执行的逻辑。激活完成后,IsActive将为true。 OnDeactivate–覆盖此方法以添加自定义逻辑,该逻辑应在屏幕停用或关闭时执行。...之前,我们在Caliburn.Micro中讨论了屏幕和导体的理论和基本API。现在,我将介绍几个示例中的第一个。此特定示例演示如何使用导体和两个“页面”视图模型设置一个简单的导航样式shell。...因为Screen会这样做,所以OnActivate方法中的代码将运行。最后,它将在导体上设置ActiveItem属性并引发适当的事件。...在View/ViewModel的注入站点上设置View.Context attached属性可以支持这一点。

    2.6K20

    C# CM框架下打造符合MVVM思想的WPF登录窗体

    概述 登录窗体无论在bs还是cs中都很常见,使用winform或者wpf ui进行设计都相对比较简单,但是如果在WPF框架,比如:Caliburn.Micro下,设计一个符合MVVM思想的登录窗体就相对有了点难度...,因为CM框架本身的设计理念是VM first而非View first.接下来开始讲解我的设计....后台设计 数据模型:定义一个用户登录类,类中囊括三个属性 登录信息验证:这里按理应该增加注册信息,应该是个list,我只是举例写了一组: 登录方法:这里首先验证登录信息,验证失败就弹窗提示报错信息,...否则通过GetView()方法获取当前view并隐藏,然后通过IOC获取IWindowManager,再通过ShowDialog显示主窗体,这几个方法都CM框架集成的方法.登录窗体需要继承Screen....mc:Ignorable="d" WindowStyle="None" AllowsTransparency="True" Background="{x:Null}" Title

    78210

    C# WPF MVVM开发框架Caliburn.Micro IResult和协同程序⑥

    如果你以前没听说过这个词,下面是维基百科要说的: 在计算机科学中,协同程序是一种程序组件,它泛化子例程以允许多个入口点在某些位置暂停和恢复执行。...协同程序非常适合实现更熟悉的程序组件,如协作任务、迭代器、无限列表和管道。 在计算机科学中,协同程序是一种程序组件,它泛化子例程以允许多个入口点在某些位置暂停和恢复执行。...利用Caliburn.Micro中的这一特性需要两件事:首先,在某个类上实现IResult接口,表示您希望执行的任务;其次,从Action2生成IResult实例。让我们更具体一些。...只需在“Execute”方法中编写代码,并确保在完成时引发“Completed”事件,无论是同步任务还是异步任务。...仅列出使用IResult实现可以做的一些有趣的事情:显示消息框、显示基于VM的模式对话框、在用户的鼠标位置显示基于VM的弹出窗口、播放动画、显示文件保存/加载对话框、基于VM属性而非控件将焦点放在特定的

    49420

    C# WPF MVVM开发框架Caliburn.Micro关于关于Actions⑤

    当然,ActionMessage是这个标记中特定于Caliburn.Micro的部分。它表示当触发发生时,我们应该发送一条“SayHello”的消息。...由于我们使用了模型优先的方法,当Caliburn.Micro(以下简称CM)创建视图并使用ViewModelBinder将其绑定到ViewModel时,它为我们设置了此方法。...在这个场景中,我们只需覆盖OnStartup,自己实例化视图并将其设置为RootVisual(在WPF的情况下为callshow)。...(在DataTemplate内部使用。) View.Model ViewModel First–定位指定VM实例的视图并将其注入内容站点。...这在主/详细场景中非常有用,在主/详细场景中,ActionMessage可能会冒泡到父VM,但需要携带要执行操作的子实例。 $source 触发要发送的ActionMessage的实际框架元素。

    2.1K20

    Apache Velocity-----基于Java的模板引擎

    指令会将外部文件原样输出,而parse指令会先对其进行解析再输出(即对外部文件中的vm语法解析) #parse("header.vm") #include("footer.vm") 4....通过继承或直接使用VelocityViewServlet,可以在管理的vm文件中获得request、session与application对象,也可以直接获取在这几个域对象中保存的值,获取的顺序与EL表达式获取的顺序类似...文件 vm文件是作为jsp的替代来展示给用户,在vm文件中可以获得在Context域或request等域中存放的值。...= /vm ## 设置编码 input.encoding = UTF-8 output.encoding = UTF-8 最后,在浏览器中访问http://localhost:8080/VelocityApp...使用VelocityLayoutServlet 在web站点开发的过程中,经常会碰到几个页面的布局大致相同,比如引用相同的头部和尾部、左侧边栏相同等,在使用jsp开发时我们可以将头部等公共文件抽离出来,

    10K21

    C# WPF MVVM开发框架Caliburn.Micro自定义引导程序④

    这是Caliburn.Micro查找视图的地方。您可以在应用程序期间的任何时候将程序集添加到此中,以使它们可用于框架,但在引导程序中也有一个特殊的位置来执行此操作。...02 给智者的话 虽然Caliburn.Micro确实通过引导程序的覆盖和IoC类提供ServiceLocator功能,但您应该避免在应用程序代码中直接使用它。...从容器中提取往往会模糊依赖代码的意图,并可能使测试更加复杂。 除了上面显示的内容之外,在引导程序上还有一些其他值得注意的方法。...您可以分别在应用程序启动或关闭时重写OnStartup和OnExit以执行代码,也可以在应用程序代码未专门处理的任何异常之后重写OnUnandledException以清除。...继承时,应将“false”传递给基构造函数的“useApplication”参数。这允许引导程序在不存在Xaml应用程序实例的情况下正确配置Caliburn.Micro。

    97210

    『React Navigation 3x系列教程』之createStackNavigator开发指南

    headerBackTitleVisible : 提供合理的默认值以确定后退按钮标题是否可见,但如果要覆盖它,则可以使用true或` false 在此选项中。...navigationOptions(屏幕导航选项) 支持一下参数: title: 可以作为headerTitle的备选字段(当没设置headerTitle时会用该字段作为标题),也可以作为TabNavigator...tintColor,会覆盖headerTitleStyle中的颜色; headerTransparent:默认为 false。...依赖于props这个变量所以是动态的,当props中的内容发生变化时,navigationOptions也会跟着变化; 提示:除了在创建createStackNavigator时配置navigationOptions...({title:text}) }} /> 将输入框中内容的变化,通过setParams({title:text})更新到页面的标题上,你会看到当输入框中内容发生变化时,标题也会跟着变。

    5K10

    C# WPF MVVM开发框架Caliburn.Micro 关于Conventions⑧

    在这里,您的根ViewModel被传递给定位器,以确定应用程序的shell应该如何呈现。在Silverlight中,这将导致设置或您的RootVisual。在WPF中,这将创建主窗口。...每当您使用UIElement上的View.Model attached属性进行ViewModel首次合成渲染时,都会调用定位器以查看合成的ViewModel应如何在UI中的该位置进行渲染。...您可以在UI中显式使用View.Model attached属性(可以选择将其与View.Context attached属性组合以进行上下文呈现),也可以按约定添加该属性,从而实现视图的常规组合。...如果要逐个视图启用它,可以在视图中将view.ApplyConventions attached属性设置为true。此附加属性以两种方式工作。...我不提供这种开箱即用的实现,因为它不能保证在Silverlight中成功。原因是Silverlight不允许您获取私有字段的值,除非调用代码是定义字段的代码。

    2.8K20

    C# WPF MVVM项目实战(进阶②)

    这篇文章还是在之前用Caliburn.Micro搭建好的框架上继续做的开发,今天主要是增加了一个用户窗体ImageProcessView,然后通过Treeview切换选择项之后在界面显示不同效果的图片...01 — 重要的知识点 本篇内容基于CM框架编写,涉及以下知识点: ①实现 INotifyPropertyChanged:在mvvm开发模式中,为了前台和后台更好的解耦合,前台界面一般通过绑定属性的方式获取属性值...由于StartViewModel继承了Caliburn.Micro.Screen,Caliburn.Micro.Screen实现了INotifyPropertyChanged,所以StartViewModel...继承Caliburn.Micro.Screen,即: public class ImageProcessViewModel : Caliburn.Micro.Screen -....图片会按照设置的Width和Height显示,比例会失调 UniformToFill:保持原始宽高比进行缩放,以填充。如果两者的宽高比不同,源会被剪切掉多余的部分。

    1.4K20

    Caliburn.Micro Bootstrapper及IOC容器配置

    而我们在Bootstrapper中只在DisplayRootViewFor()中给定了一个主ViewModel的类型,那么CM是如何找到找到ViewModel和View并创建实例的?...CM在创建ViewModel实例后,会先根据ViewModel类型全名获取View的类型名(根据设定的名称映射规则),然后根据View的类型名查找View类型并创建实例。...如果一个ViewModel继承自ViewAware,那么在创建ViewModel对应的View时,会调用ViewAware的AttachView方法把View关联在ViewModel上,以后就可以通过ViewAware...ViewModel可以通过继承Screen的方式间接继承ViewAware(Screen继承了ViewAware),这样会有很多方便,比如在ViewModel中用GetView获得View进行某些操作。...在目前正在执行的程序集中时,可以这样写。

    94630

    Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

    用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo...和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle...的例子里有提供下边的在Vs里就能找到 看一下引导类 public interface IShell { } public class MyBootstrapper:Bootstrapper...匹配好View和ViewModel后 去查找View里的元素名称和viewModel里的方法或属性是否有一至的如果有一至的就绑定 !...接口 这是一个专门用来打开窗体的类 它可以以Show() ShowDialog还有ShowPopup形式打开窗体 今天就先说到这,下次会写一下Caliburn的Actions Demo下载:BootstrapperAndConventions.rar

    1.2K80

    笔记27 | WindowManager实现悬浮窗口总结

    其实就是一块显示区域,在 Android 中就是绘制的画布:Surface,当一块 Surface 显示在屏幕上时,就是用户所看到的窗口了。...Window 是分层的,每个 Window 都有对应的 z-ordered(处在这些叠加窗口中的位置),层级大的会覆盖在层级小的 Window 上面,这和 HTML 中的 z-index 概念是完全一致的...2)abstract void removeViewImmediate(View view);//是removeView(View) 的一个特殊扩展,在方法返回前能够立即调用该视图层次的View.onDetachedFromWindow...token必须设置为Activity的token,以指出该窗口属谁。...15. public float screenBrightness = -1.0f; 用来覆盖用户设置的屏幕亮度。表示应用用户设置的屏幕亮度。从0到1调整亮度从暗到最亮发生变化。

    2.4K60

    react-navigation,刷新你的导航一、属性介绍二、案例

    直接切换 modal:iOS独有的使屏幕从底部拖出 headerMode:返回上级页面时的动画效果 float:iOS的默认效果 screen:滑动过程中,整个页面都会返回 none:无动画 cardStyle...path:路由中设置的路径的覆盖映射配置。...:和导航的功能一样,对应界面名称,可以在气头页面通过这个screen传值和跳转 navigationOptions:配置TabNavigator的一些属性 title:标题,会同时设置导航条和标签栏的title...路径 - 提供routeName到路径配置的映射,它覆盖routeConfigs中设置的路径。 backBehavior - 后退按钮是否会切换到初始路由?...- 当您的标签是字符串时,要覆盖内容部分中的文本样式的样式对象 二、案例 2.1StackNavigation案例 集成第三方库 使用npm安装react-navigation库,--save表示将该组件写入到

    19.7K90

    C# WPF MVVM开发框架Caliburn.Micro 名称Transformer⑩①

    使用名称Transformer NameTransformer是在Caliburn.Micro v1.1中引入的,它是ViewLocator和ViewModelLocator如何将类名映射到其伙伴角色的一个组成部分...因此,在向NameTransformer添加规则时,必须首先添加更一般的规则,最后添加更具体的规则。...[A-Za-z_]\w*View$" ); 这两个调用的“globalFilterPattern”参数相同,只是在第二个方法调用的参数中添加了“Views.”。...这表示仅当名称空间名称以“视图”(包括点)结尾时,才应应用该规则。如果模式匹配,则结果是ViewModel名称的数组,其命名空间以“ViewModels”结尾。...如果需要“交换”任何一个单独的组件,则可以使用单独的组件。 上面示例中的捕获组“后缀”对以“ViewModels”结尾的名称进行模式匹配。

    1.8K20
    领券