Caliburn Micro WindowManager设置WindowStyle.None并允许拖动

时间:2013-07-02 14:53:28

标签: c# wpf mvvm caliburn.micro

我目前非常坚持这一点,我的设计师希望我们的应用程序使用WindowStyle.None删除边框和默认丑陋的控件,然后他添加自定义控件,通常允许拖动过去我们使用过矩形并监视mousedown事件以允许拖动。

然而,对于Caliburn micro,我们失去了对窗口的控制权,因为windowmanager为我们创建了这个,我知道你可以覆盖创建窗口方法,但是这仍然无法访问向窗口本身添加UI元素和绑定对那些事件。或者至少我可以找到一种方法来做到这一点。

基本上我们想要实现的是具有WindowStyle.None的“主窗口”以及拖动和移动窗口的能力。我的谷歌搜索未能给出一个可靠的答案,我希望有人在这里有一个想法。

2 个答案:

答案 0 :(得分:4)

Caliburn.Micro并没有强迫您将所有视图用于UserControls。主视图或显示为主窗口的视图可以一个Window控件,您可以直接在该窗口上设置属性,例如" WindowStyle.None"。当Caliburn.Micro看到主视图模型背后的视图(您使用的视图模型为根,然后是您首先创建的视图模型)实际上是一个Window而不是UserControl,那么它将荣誉这个并显示该窗口,不会创建一个新窗口。因此,您可以直接在该窗口上设置属性,一切都可以正常工作。

答案 1 :(得分:2)

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

查看here示例。

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

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