Caliburn Micro WindowManager设置WindowStyle.None并允许拖动
本文关键字:许拖动 拖动 WindowManager Micro 设置 WindowStyle None Caliburn | 更新日期: 2023-09-27 18:20:53
我目前非常纠结于此,我的设计师希望我们的应用程序具有WindowStyle。无需删除边框和默认的丑陋控件,然后他添加了自定义控件,通常是为了允许拖动。过去我们使用矩形并监视mousedown事件以允许拖动。
然而,对于Caliburn micro,我们失去了对窗口的控制,因为windowmanager为我们创建了这个窗口,我知道你可以覆盖create window方法,但这仍然无法访问向窗口本身添加UI元素并绑定到这些事件。或者至少我能想出一个办法。
基本上,我们试图实现的是带有WindowStyle.None的"主窗口",以及拖动和移动窗口的能力。我的谷歌搜索并没有给出一个可靠的答案,我希望这里有人有一个想法。
Caliburn.Microo不会强制您将所有视图设置为UserControls。主视图或显示为主窗口的视图可以是窗口控件,您可以直接在该窗口上设置属性,如"WindowStyle.None"。当Caliburn.Micro看到主视图模型后面的视图(您用作根的视图模型,然后是您首先创建的视图模型)实际上是窗口,而不是UserControl时,它将尊重这一点显示该窗口,它将不会创建一个新窗口。因此,您可以直接在该窗口上设置属性,一切都会正常工作。
Caliburn.Micro WindowManager
提供了对其Show
方法的覆盖,允许您设置所创建窗口的设置。
看看这里的例子。
或者,您可以直接使用Window
作为视图类型(在XAML和生成的代码隐藏文件中),并在XAML中以声明方式设置属性。
如果您希望使所有对话框等都具有通用UI组件,那么您可以创建一个派生的WindowManager
类型,该类型将调用委托给CM WindowManager
,但将传入的视图模型封装为通用视图模型。然后在引导程序中注册此自定义窗口管理器,而不是默认的CM窗口管理器。