Caliburn笔记-Presenter与View(视图策略)(wpf框架)
2009-12-28 23:00 Clingingboy 阅读(1028) 评论(0) 编辑 收藏 举报参考:http://caliburn.codeplex.com/wikipage?title=View%20Strategies&referringTitle=Documentation
来看下presenter是怎么与view分开的,calbiburn把view和presenter分的很彻底,view很干净,presenter也很干净,几乎感觉不到他们两有关系.这一点感觉设计的非常不错.与asp.net mvc有异曲同工之处.asp.net mvc通过controller的result去寻早view,presenter则与view也有默认的规则。
ViewStrategy
即视图查找策略,即根据Presenter的名字然后与View名字相对应去匹配
如ContactManager.Presenters.ShellPresenter则会生成以下View匹配规则.只要匹配到一个即可
来看下项目View的目录结构,Ok,匹配到第2条
在DefaultWindowManager有一个代码片段
var view = EnsureWindow(rootModel, _viewStrategy.GetView(rootModel, null, context));
现在可以知道View与Presenter的转换过程了.
自定义视图策略
除了默认查找规则外,还可以通过元数据标签来实现自定义视图策略.如
[ViewAttribute(typeof(Window1))] [Singleton(typeof(IShellPresenter))] public class ShellPresenter : Navigator, IShellPresenter { }
处理的代码片段
var customStrategy = modelType.GetCustomAttributes(typeof(ViewStrategyAttribute), true) .OfType<ViewStrategyAttribute>().Where(x => x.Matches(context)).FirstOrDefault(); if (customStrategy != null) return customStrategy.GetView(model, displayLocation, context);
视图与WPF
caliburn提供了View的附加属性,可以通过设置Presenter通过视图策略找到View,然后赋给当前的View
<ContentControl cal:View.Model="{cal:Resolve info:IQuestionPresenter}" />
如上Resolve是个自定义的标记扩展,用于在依赖注入容器中寻找,这个应用在这个xaml中使用恰到好处.
个人认为这部分设计的不错.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2006-12-28 忙碌的日子暂时停下来了