Eri*_*ndi 81
不确定这对所有人都有用,但我今天碰到了这个,团队中的某个人建议" 你试过普通 "吗?
事实证明他是对的.以下似乎很好地恢复您的窗口:
if (myWindow.WindowState == WindowState.Minimized)
myWindow.WindowState = WindowState.Normal;
Run Code Online (Sandbox Code Playgroud)
这工作正常,如果需要,将窗口恢复到最大化.在调用WindowState时首先检查最小化状态似乎很关键.第二次将窗口"恢复"到非最大化状态.
希望这可以帮助.
Ric*_*key 14
WPF的观点是这是一个操作系统功能.如果你想搞乱操作系统功能,你可能不得不弄清楚.幸运的是,他们为我们提供了这样做的工具.这是一个UN-minimize方法,它采用WPF窗口并使用WIN32来完成效果而不记录任何状态:
public static class Win32
{
public static void Unminimize(Window window)
{
var hwnd = (HwndSource.FromVisual(window) as HwndSource).Handle;
ShowWindow(hwnd, ShowWindowCommands.Restore);
}
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, ShowWindowCommands nCmdShow);
private enum ShowWindowCommands : int
{
/// <summary>
/// Activates and displays the window. If the window is minimized or
/// maximized, the system restores it to its original size and position.
/// An application should specify this flag when restoring a minimized window.
/// </summary>
Restore = 9,
}
}
Run Code Online (Sandbox Code Playgroud)
kir*_*ran 10
SystemCommands类有一个名为RestoreWindow的静态方法,可将窗口恢复到以前的状态.
SystemCommands.RestoreWindow(this); // this being the current window
Run Code Online (Sandbox Code Playgroud)
[注意:SystemCommands类是.NET 4.5+ (MSDN Ref)的一部分,用于针对早期版本的Framework的项目可以使用WPF Shell扩展(MSDN Ref) ]
因为某些原因,
WindowState = WindowState.Normal;
Run Code Online (Sandbox Code Playgroud)
对我不起作用。所以我使用了以下代码 & 它工作..
Show();
WindowState = WindowState.Normal;
Run Code Online (Sandbox Code Playgroud)