问题标签 [caliburn.micro]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ioc-container - 如何销毁使用 MEF 创建的对象
嗨,我在 WPF 应用程序中使用 MEF 和 caliburn.micro。我想知道如何销毁使用 MEF 创建的实例。
例如简单的外壳:
第一个屏幕
第二屏:
WPF 应用程序从与 ILogOnViewModel 接口关联的第一个屏幕开始。然后我停用此屏幕并激活与 IMessengerViewModel 界面关联的第二个屏幕。
我使用 ANTS Mememory 分析器检查内存使用情况,但 ILogOnViewModel 的实例仍然存在,用户类的实例也存在。
我是 IoC 的新手,DI ......所有使用 MEF 导出的类都必须在整个 WPF 应用程序生命周期中存在?
其他示例,我使用窗口管理器创建新的 wpf 窗口。
ChatViewModel 是 WPF 窗口。
创建 IChatViewModel 的实例:
然后我关闭(单击窗口上的 X(关闭)按钮)WPF 窗口,ChatViewModel 已停用,但此类的实例仍然存在。
它存在方式如何杀死/销毁这个实例?
wpf - WPF 中 .NET (Rx) 的响应式扩展 - MVVM
我在我的 WPF 应用程序中使用带有 Caliburn.Micro 的 NET (Rx) 响应式扩展。我正在尝试移植我的 WPF 应用程序以使用 MVVM 架构,并且我需要监视 TextBox 控件的 Text 属性的更改。
如果 Text 属性的最后一次更改是在 3 秒之前,我需要调用服务的 LoadUser 方法。
使用 MVVM 架构将逻辑从我的旧解决方案移植到新解决方案。
老的
XAML:
在后面的代码中我有这个:
我想在我的视图模型类中使用 Observable.FromEvent 。像这样的东西
带有 MVVM 的 WPF
看法:
查看型号:
我的问题是 Observable.FromEvent 使用 TextBox 控件,我不知道如何从 ViewModel 类访问该控件。
我可以绑定到 TextBox 的 Text 属性,也可以将命令绑定到 TextBox 控件的某个事件,但此方法使用视图中的对象。
感谢您的想法。
wpf - MEF 的问题 - ExportFactory在 Caliburn.Micro
我在 Caliburn.Micro 中使用 MEF 导出视图模型类。我想使用 ExportFactory 类而不是 Export 属性,因为我尝试解决与此处所述相同的问题: MEF 的对象破坏问题
我尝试解决这个问题,例如:
一些视图模型 - WPF 窗口:
我在其他一些视图模型类中使用窗口管理器打开聊天屏幕:
然后我关闭屏幕,但这个类的对象还活着。我尝试与此处描述的相同的问题: MEF 的对象破坏问题
我有视图模型 - 它是 WPF 窗口
场景/解决方案
我有 3 个视图模型/屏幕:
- LogOnViewModel - 用户控制
- MessengerViewModel - 用户控件
- ChatViewModel - WPF 窗口
这些视图模型的代码在这里:
我的外壳看起来像这样:
我想使用 ExportFactory 类来创建视图模型类。我尝试实现与此处相同的逻辑:http: //mef.codeplex.com/wikipage?title= PartCreator。
所以我为创建视图模型类创建了自己的控制器:
这是它:
我在这些类中导入 ViewModelsControler 类:
- 外壳视图模型
- MessengerViewModel
并希望在创建视图模型类上使用 ViewModelsControler 类的方法。- 项目清单
我不知道我做错了什么,如果我尝试编译这段代码,我会得到这个错误:
找不到合同 Spirit.ViewModels.IShellViewModel 的任何实例。Staktrace:在 C:\Users\Jan\Documents\Visual Studio 2010\Projects\C#\Pokec_Messenger\ver.beta\Pokec__Messenger\Spirit_Caliburn_Micro_v1.0\BootStraper\MefBootStrapper 中的 Spirit.BootStraper.MefBootStrapper.GetInstance(Type serviceType, String key) .cs:Caliburn.Micro.IoC.GetT 中的第 59 行:\Users\Jan\Documents\Visual Studio 2010\Projects\C#\Pokec_Messenger\ver.beta\Pokec__Messenger\Caliburn_Micro_Completed\CaliburnMicro\src\Caliburn.Micro.Silverlight \IoC.cs:Caliburn.Micro.Bootstrapper`1.DisplayRootView() 的第 33 行:\Users\Jan\Documents\Visual Studio 2010\Projects\C#\Pokec_Messenger\ver.beta\Pokec__Messenger\Caliburn_Micro_Completed\CaliburnMicro\src \Caliburn.Micro.Silverlight\Bootstrapper.cs:Caliburn.Micro.Bootstrapper.OnStartup 的第 175 行(对象发送者,
如果我在创建视图模型类上使用 Export 属性,效果很好。
像这样的东西:
和外壳:
哪里可能有问题?在 MEF 助推器类中?我使用经典的 MEF boostrape: http ://devlicio.us/blogs/rob_eisenberg/archive/2010/07/08/caliburn-micro-soup-to-nuts-pt-2-customizing-the-bootstrapper.aspx
感谢您的建议,您的时间和帮助。
c# - 在 Caliburn.Micro 中使用 MEF 导出 - 增加内存问题
我有增加内存的问题。我在 caliburn.micro 中使用 MEF 创建新屏幕 - WPF 窗口。
屏幕/视图的视图模型如下所示:
在创建时我使用 ExportFactory,控制器在这里:
我在 ChatScreenManager 类中使用 ViewModelsControler 类。此类打开/删除聊天屏幕。
就这个:
我的问题是:
- 我从 ChatScreenManager 调用 OpneChatScreen 方法打开新的 WPF 窗口
- 将此窗口上的引用添加到字典。
- 当我关闭窗口时,我调用 RemoveChatScreen。
在 RemoveChaScreen 中:
- 我得到总内存,例如是 37,000K
- 然后我在 ExportLifetimeContext chatScreen 上调用 Dipose 方法
- 强制GC
- 并获取总内存,例如是 39,000K
内存使用量仍在增加。我希望如果我在对象 ChatViewModel 和 ChatView 对象上调用 Dispose 方法,这些对象都会被销毁。
wpf - 在 shell 视图模型类 [Caliburn.Micro] 的属性上绑定 WPF 窗口标题的问题
我在 WPF Window 的 Title 属性上的 shell 视图模型类中的绑定属性有一个简单的问题 - 它是 shell。
我的外壳视图如下所示:
外壳视图模型类:
如果我运行外壳视图(WPF 窗口)的应用程序标题为 Namespace.ShellViewModelClass,则外壳视图模型类中没有属性标题的值。
如果我在 shell 视图中激活某个屏幕,则窗口的 Title 属性是 Namespace.ViewModelClass。
我怎样才能消除这种行为?感谢您的建议。
silverlight - 使用Caliburn Micro和WP7调用地图控件的方法
我的 Windows Phone 7 应用程序中有一个使用 Silverlight Map 控件的页面(视图)。
我需要在控件上调用SetView方法,但我想坚持在视图模型中保留功能的 MVVM 风格。
我计划在单击应用程序栏按钮后调用此方法,因此我无法通过 EventArgs 参数访问 Map。
最好的方法是什么?
silverlight - Caliburn 是否需要给定对象的元素约定才能将它的 ViewModel 实例映射到 View 实例?
我正在尝试将 ViewModel 中的 Canvas 对象映射到 View 中的 Canvas 对象。
但是,我在运行时收到“用户代码未处理 CompositionException”错误。在 ViewModel 中注释掉我的 Canvas 对象可以防止错误,所以我猜 Caliburn 正在尝试映射它并引发错误。
wpf - 视图模型调用中的调用方法需要/消耗大量时间
嗨,我尝试解决这种情况。我有 MVVM 设计的 WPF 应用程序。我使用 Caliburn Micro 框架和注入 MEF。
在 WPF 应用程序中,我使用来自外部程序集的服务。它运作良好。
问题是。我将可观察字典绑定到列表框。列表框可以包含 0 到 400 个项目。我在列表框项目上有数据模板,它由图像和 som texbox 组成。列表框就像 Skype 或 google talk 中的联系人列表。
我从服务中调用每 3-4 秒的方法,将新数据作为字典返回。用这个数据 aj 刷新 Listbox。
我的代码在视图模型中看起来像这样:
正如我所说,问题是服务中的 GetFriends 方法需要花费大量时间,并且我的应用程序冻结了。
如何解决这个问题?在 winforms 应用程序中,我使用后台工作程序,但这是我的第一个带有 MVVM 的 WPF 应用程序。它存在任何“模式”或“设计”如何调用在视图模型类中消耗大量时间的方法?在另一个线程中调用此方法?
c# - 必须在与 DependencyObject 相同的线程上创建 DependencySource
我将可观察字典从视图模型绑定到视图。我使用 Caliburn 微框架。
看法:
来自视图模型类的代码。
属性如下所示:
在调度程序计时器中,我每 3 秒在单独的线程新服务方法中调用一次。
所以我的视图模型构造函数我有这个:
Timer tick 方法在这里:
当我运行应用程序时,出现此错误:
我尝试更换调度员:
这个 _threadDispatcher = Dispatcher.CurrentDispatcher;
有了这个: _threadDispatcher = Application.Current.Dispatcher;
但这无济于事。感谢您的建议。
MyObservableDicionary 不是依赖对象或具有依赖属性:
wpf - 在视图模型类中注入许多类
我用 MVVM 设计开发 wpf 应用程序。作为 MVVM 框架,我使用 Caliburn Micro。我在外部程序集中拥有的服务,它被注入到带有 MEF 的视图模型类中。
服务中的问题我有很多小班,我尽量尊重 SOLID 原则。
班级数约为 12-15。
我需要在视图模型类中使用这些类。所以我用这个:
我不认为这种方式是正确的。或者它存在一些优雅、简单的东西。感谢您的意见和建议。