2

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

但是对于 Caliburn micro,我们失去了对窗口的控制,因为 windowmanager 为我们创建了它,我知道您可以覆盖 create window 方法,但这仍然无法访问将 UI 元素添加到窗口本身并绑定到这些事件. 或者至少我可以想办法做到这一点。

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

4

2 回答 2

4

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

于 2013-07-02T21:43:48.810 回答
2

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

看看这里的例子。

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

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

于 2013-07-02T16:09:34.337 回答