我有一个窗口,在窗口内,我有一个用户控件。我只想在F11命中时最大化或扩展(全屏)用户控制。 我现有的代码适用于我的窗口,
if (e.Key == Key.F11)
{
WindowStyle = WindowStyle.None;
WindowState = WindowState.Maximized;
ResizeMode = ResizeMode.NoResize;
}
但我需要为UserControl提供此功能。是否有类似的方法来最大化用户控制?请给我一些建议。提前感谢。
答案 0 :(得分:3)
我认为你不需要PINvoke即可在没有Windows工具栏的情况下获得全屏。我们的想法是让您的用户控制并将其放在一个全屏显示的新窗口中。 这就是我做到的。
result.Sort((x, y) => {
if (x.Name.StartsWith(searchText)) {
if (!y.Name.StartsWith(searchText))
return 1;
}
else if (y.Name.StartsWith(searchText))
return -1;
return String.Compare(x.Name, y.Name);
});
在这个答案中可以找到RemoveChild的实现(和AddChild类似): https://stackoverflow.com/a/19318405
答案 1 :(得分:1)
用户控件没有这样的东西。
我认为只有两件事我不确定你想要实现。
1)您想要一个没有窗口工具栏的全屏幕,为此,您必须调用 PINvokes
WPF没有内置属性来隐藏标题栏的“关闭”按钮,但你可以使用几行P / Invoke来完成它。
首先,将这些声明添加到Window类中:
private const int GWL_STYLE = -16;
private const int WS_SYSMENU = 0x80000;
[DllImport("user32.dll", SetLastError = true)]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
Then put this code in the Window's Loaded event:
var hwnd = new WindowInteropHelper(this).Handle;
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);
然后你去了:没有更多关闭按钮。你也不会在标题栏的左侧有一个窗口图标,,这意味着没有系统菜单,即使你右键单击标题栏 - 它们都在一起。
请注意,Alt + F4仍将关闭窗口。如果您不想在后台线程完成之前允许窗口关闭,那么您也可以覆盖OnClosing并将Cancel设置为true。
2)您希望在对话框中显示用户控件,然后您必须使用窗口类并将Usercontrol置于其中作为孩子
您目前拥有的内容对Windows是否正确,是的。如果情况并非如此,那么我只能认为你的目标是第一个?