WPF windows窗体最大化后四周会有一部分被遮挡

WPF windows窗体放大后四周会有一部分被遮挡,以下面的图标为例子,这是没有最大化下的样子:

img


可以看到窗体图标和边界的间隔,最大化之后是这样:

img


可以明显看到间隔变小了,有知道该怎么处理这种情况的吗,这是为什么

应该是和窗体风格有关,上面的是传统winforms的,下面是 modenui 风格的

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/351578
  • 除此之外, 这篇博客: 【WPF】自定义Windows窗口样式中的 4、对话框窗口 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    1. 前端代码DialogWindow.xaml
    <local:CustomWindow x:Class="CustomSystemWindow.CustomWindow.DialogWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:CustomSystemWindow.CustomWindow"
            mc:Ignorable="d" Title="DialogWindow" Height="250" Width="460" >
        <Border Background="#15181C">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="120"></RowDefinition>
                    <RowDefinition Height="90"></RowDefinition>
                </Grid.RowDefinitions>
                <TextBlock x:Name="MessageControl" Grid.Row="0" 
                           FontSize="14" Foreground="White" TextWrapping="Wrap"
                           VerticalAlignment="Center" HorizontalAlignment="Center"/>
                <Border Grid.Row="0" BorderBrush="#252A33" BorderThickness="1" 
                        VerticalAlignment="Bottom"></Border>
                <Grid Grid.Row="1" x:Name="YesNoControl" Visibility="Visible">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"></ColumnDefinition>
                        <ColumnDefinition Width="*"></ColumnDefinition>
                    </Grid.ColumnDefinitions>
                    <Button Grid.Column="0" HorizontalAlignment="Right" 
                            Height="30" Width="150" Content="" Foreground="White" 
                            Margin="0,0,10,0" Background="#434B59"
                            Click="OkButtonClick"/>
                    <Button Grid.Column="1" HorizontalAlignment="Left"
                            Height="30" Width="150" Content="" Foreground="White" 
                            Margin="10,0,0,0" Background="#434B59"
                            Click="CancelButtonClick"/>
                </Grid>
                <Button Grid.Row="1" x:Name="OkControl" Visibility="Collapsed"
                        Height="30" Width="150" Content="确认" 
                        Foreground="White" Background="#434B59"
                        Click="ConfirmButtonClick"/>
            </Grid>
        </Border>
    </local:CustomWindow>
    
    
    1. 后端代码DialogWindow.xaml.cs
    using System.Windows;
    
    namespace CustomSystemWindow.CustomWindow
    {
        public partial class DialogWindow
        {
            public DialogWindow()
            {
                InitializeComponent();
            }
    
            public string Message
            {
                set { this.MessageControl.Text = value; }
                get { return this.MessageControl.Text; }
            }
    
            public static bool? Show(string title, string msg, MessageBoxButton category)
            {
                var msgBox = new DialogWindow();
                if (MessageBoxButton.OK == category)
                {
                    msgBox.YesNoControl.Visibility = Visibility.Collapsed;
                    msgBox.OkControl.Visibility = Visibility.Visible;
                }
                else if (MessageBoxButton.YesNo == category)
                {
                    msgBox.YesNoControl.Visibility = Visibility.Visible;
                    msgBox.OkControl.Visibility = Visibility.Collapsed;
                }
    
                msgBox.ResizeMode = ResizeMode.NoResize;
                msgBox.WindowStartupLocation = WindowStartupLocation.CenterScreen;
                msgBox.Title = title;
                msgBox.Message = msg;
    
                return msgBox.ShowDialog();
            }
    
            private void OkButtonClick(object sender, RoutedEventArgs e)
            {
                this.DialogResult = true;
                this.Close();
            }
    
            private void CancelButtonClick(object sender, RoutedEventArgs e)
            {
                this.DialogResult = false;
                this.Close();
            }
    
            private void ConfirmButtonClick(object sender, RoutedEventArgs e)
            {
                this.Close();
            }
        }
    }