c# - WPF 最大化窗口大于屏幕

标签 c# wpf .net-4.5

当使用 AllowsTransparency="True"WindowStyle="None" 创建 WPF 窗口并通过 this.WindowState = WindowState.Maximized; 最大化它时,窗口变得比我的屏幕。

设置 AllowTransparency="False" 时,我的窗口周围有一个边框,但窗口不会比我的屏幕大。
在我的例子中,我有一个 1920x1080 的屏幕,窗口变成了 1934x1094。
在我的 1280x1024 屏幕上,窗口将变为 1294x1038。
无论是否启用 AllowTransparency,Window 都将变得如此大,但在禁用 AllowTransparency 后仍可正常工作。

在最大化之前设置 AllowTransparency 不起作用并抛出 InvalidOperationException。

如何获得没有 Windows 样式边框但尚未正确最大化的 WPF 窗口?

最佳答案

聚会晚了几年,但只需为 SizeChanged 事件增加 this.borderthickness,如下所示:

<Window x:Class="MyApp.MainWindow"
    ResizeMode="CanResize" 
    WindowStyle="SingleBorderWindow"
    SizeChanged="Window_SizeChanged">
....
Code
....
</Window>


public void Window_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        if (this.WindowState == WindowState.Maximized)
        {
            this.BorderThickness = new System.Windows.Thickness(8);
        }
        else
        {
            this.BorderThickness = new System.Windows.Thickness(0);
        }
    }

关于c# - WPF 最大化窗口大于屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29391063/

相关文章:

wpf - WPF 中的绿屏

c# - 与转换器的双向数据绑定(bind)不更新源

c# - WPF ComboBox已关闭,但已选择滚动更改项

c# - 捕获异常处理

c# - 从 p4 路径中提取文件名的正则表达式

c# - 如何使用后期绑定(bind)从 VB.Net 调用位于 C# DLL 中的方法

c# - 为 serilog sink 指定更高的日志级别

c# - 如何在 EF6 异步中启动实体存储过程而不等待返回?

c# - 新 AppDomain 中的 Web 应用程序中的 "The type LogWriter cannot be constructed"

c# - 属性 getter/setter 的方法命名是否在 IL 中标准化?