gpt4 book ai didi

c# - 如何在 Caliburn.Micro 2 中使用自定义窗口?

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:14 25 4
gpt4 key购买 nike

我想使用我自己的扩展 Window 的类来在使用 Caliburn.Micro 的 MVVM 环境中显示对话框。

我已经阅读了如何通过覆盖 WindowManager 中的 EnsureWindow 方法或通过访问默认的 WindowManager 我的 View 模型中的实例并将设置字典传递给“ShowDialog”方法。尽管如此,我真正需要的是使用我自己的类,因为它包含无法通过简单地设置一些属性来提供给默认窗口的其他元素。

为清楚起见,我可以为我的 Root View 使用默认的 Window 类。

这可能吗?如果我的问题不知何故没有意义,我会很乐意扩展我的理由......

提前感谢社区!

最佳答案

根据@mvermef 的建议,我做了一些研究并提出了解决方案。它包括重写 WindowManager 类的 EnsureWindow 方法。这是一个例子:

protected override Window EnsureWindow(object model, object view, bool isDialog)
{
var window = view as Window;
if (window == null)
{
window = new MyCustomWindowClass
{
SizeToContent = SizeToContent.WidthAndHeight
};

// I defined a ContentControl "WindowContent" in MyCustomWindow
// class to insert the window's contents
((MyCustomWindowClass)window).WindowContent.Content = view;
window.SetValue(View.IsGeneratedProperty, true);

var owner = InferOwnerOf(window);
if (owner != null)
{
window.WindowStartupLocation = WindowStartupLocation.CenterOwner;
window.Owner = owner;
}
else
{
window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
}
}
else
{
var owner = InferOwnerOf(window);
if (owner != null && isDialog)
{
window.Owner = owner;
}
}

return window;
}

关于c# - 如何在 Caliburn.Micro 2 中使用自定义窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28006810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com