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 Micro WindowManager设置WindowStyle.None并允许拖动

Caliburn.Microo不会强制您将所有视图设置为UserControls。主视图或显示为主窗口的视图可以是窗口控件,您可以直接在该窗口上设置属性,如"WindowStyle.None"。当Caliburn.Micro看到主视图模型后面的视图(您用作根的视图模型,然后是您首先创建的视图模型)实际上是窗口,而不是UserControl时,它将尊重这一点显示该窗口,它将不会创建一个新窗口。因此,您可以直接在该窗口上设置属性,一切都会正常工作。

Caliburn.Micro WindowManager提供了对其Show方法的覆盖,允许您设置所创建窗口的设置。

看看这里的例子。

或者,您可以直接使用Window作为视图类型(在XAML和生成的代码隐藏文件中),并在XAML中以声明方式设置属性。

如果您希望使所有对话框等都具有通用UI组件,那么您可以创建一个派生的WindowManager类型,该类型将调用委托给CM WindowManager,但将传入的视图模型封装为通用视图模型。然后在引导程序中注册此自定义窗口管理器,而不是默认的CM窗口管理器。