WPF用户控制全屏最大化?

时间:2013-09-04 14:40:43

标签: c# wpf wpf-controls fullscreen

我有一个窗口,在窗口内,我有一个用户控件。我只想在F11命中时最大化或扩展(全屏)用户控制。 我现有的代码适用于我的窗口,

if (e.Key == Key.F11)
{
    WindowStyle = WindowStyle.None;
    WindowState = WindowState.Maximized;
    ResizeMode = ResizeMode.NoResize;
}

但我需要为UserControl提供此功能。是否有类似的方法来最大化用户控制?请给我一些建议。提前感谢。

2 个答案:

答案 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是否正确,是的。如果情况并非如此,那么我只能认为你的目标是第一个?