-1

(这是一个问答式的问题,我自己已经回答过了)

" 我正在 wpf 中制作自定义窗口镶边,但是当我将其设置为 windowStyle=none 时

  • 窗外的剪辑
  • 我不能拖动窗口
  • 并且窗口覆盖了任务栏

"

4

1 回答 1

-1

解决问题1

使窗口中的主网格可以按名称访问:

<Grid Name="MainGrid">

然后添加这些函数以在窗口状态更改时创建边距

void setWinMargin()
{
    switch (WindowState)
    {
        case WindowState.Maximized:
            MainGrid.Margin = new Thickness(8, 8, 8, 8);
            break;
        case WindowState.Normal:
            MainGrid.Margin = new Thickness(0, 0, 0, 0);
            break;
    }
}

private void Window_StateChanged(object sender, EventArgs e)
{
    setWinMargin();
}

这对你来说是你的 xaml

StateChanged="Window_StateChanged"

这将做的是将所有内容从屏幕边缘推开以可见

解决问题2

在您的窗口内:

<WindowChrome.WindowChrome>
    <WindowChrome CaptionHeight="35">
    </WindowChrome>
</WindowChrome.WindowChrome>

使 CaptionHeight 成为您的窗口镶边高度,您希望窗口被拖动到的位置

解决问题3

不要使用windowstate none,只需定义windowchrome,原来的按钮就会消失,按钮(在右侧)仍然存在,只是不可见,所以你必须把按钮放在它们上面

于 2021-03-12T17:20:51.470 回答