我正在使用Caliburn Micro Window Manager显示对话框。我想从对话框中删除最大化和最小化按钮。
如果我查看Windows Manager源代码(在WPF下),我可以看到第三个参数,它允许我将设置传递给对话框。我的问题是我无法传递第三个参数 - 我收到错误。这可以在hello窗口管理器示例项目中复制。
有什么想法吗?
不知何故,我似乎引用了一个只允许2个参数显示的IWindowManager。
这是我想要做的但是会导致错误:
var loginViewModel = new LoginViewModel();
WindowManager windowManager = new WindowManager();
Dictionary<string, object> settings = new Dictionary<string, object>();
// add settings here to pass to dialog
windowManager.ShowDialog(loginViewModel, null, settings);
这是IWindowManager界面,显示3个参数:
public interface IWindowManager
{
/// <summary>
/// Shows a modal dialog for the specified model.
/// </summary>
/// <param name="rootModel">The root model.</param>
/// <param name="context">The context.</param>
/// <param name="settings">The optional dialog settings.</param>
/// <returns>The dialog result.</returns>
bool? ShowDialog(object rootModel, object context = null, IDictionary<string, object> settings = null);
/// <summary>
/// Shows a non-modal window for the specified model.
/// </summary>
/// <param name="rootModel">The root model.</param>
/// <param name="context">The context.</param>
/// <param name="settings">The optional window settings.</param>
void ShowWindow(object rootModel, object context = null, IDictionary<string, object> settings = null);
/// <summary>
/// Shows a popup at the current mouse position.
/// </summary>
/// <param name="rootModel">The root model.</param>
/// <param name="context">The view context.</param>
/// <param name="settings">The optional popup settings.</param>
void ShowPopup(object rootModel, object context = null, IDictionary<string, object> settings = null);
}
答案 0 :(得分:3)
dynamic settings = new ExpandoObject();
settings.WindowStyle = WindowStyle.ToolWindow;
settings.ShowInTaskbar = false;
settings.Title = "Test";
windowManager.ShowDialog(loginViewModel, "Modeless", settings);
答案 1 :(得分:1)
我不记得任何最新版本的Caliburn.Micro使用了带三个参数的IWindowManager.ShowDialog。你是指this link from the Codeplex site吗?这似乎是Rob拒绝的用户请求。
正如您可能知道的那样,ShowDialog()将使IWindowManager实例化它找到的视图(通过命名约定)并将其附加到您提供的任何视图模型(例如,LoginViewModel附加到名为LoginView的“找到”视图)。
我猜测LoginView对你来说是一个UserControl,但你可以将这个视图作为常规窗口,然后设置WindowStyle属性(在XAML中)以使用其中一个没有最大化按钮的选项。 This MSDN article显示了各种枚举选项。 WindowStyle.ToolWindow是唯一包含关闭按钮而不是最小/最大按钮的窗口,但由于它改变了关闭按钮的外观,您可能更喜欢WindowStyle.None,只需定义自己的窗口镶边和按钮。
<Window x:Class="MyNamespace.LoginView"
...
WindowStyle="ToolWindow">
...
</Window>
答案 2 :(得分:0)
而不是将您的View作为Usercontrol设为窗口并设置其 ResizeMode =“NoResize”
<Window x:Class="Company.Project.Views.MyView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
ResizeMode="NoResize">
现在您只有红色的“X”关闭按钮,没有最大化/最小化按钮。