C# WPF 窗口宽度、MaxWidth、MinWidth 被忽略

Ric*_*ard 5 c# wpf xaml window width

我有一个在 XAML 中定义的 WPF 窗口,如下所示:

<Window x:Class="com.some.company.window"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="My Cool Window" 
x:Name="CoolWindow"
Height="435"
Width="70"
MinWidth="70"
MaxWidth="70"
Left="{PropertyState Default=0}"
Top="{PropertyState Default=0}"
Initialized="InitializeWindow"
ResizeMode="NoResize"  
Style="{DynamicResource DefaultWindow}">
.....
.....
</Window>
Run Code Online (Sandbox Code Playgroud)

问题是,当创建窗口并将其显示在屏幕上时,它始终大于我在宽度定义中指定的 70 像素。宽度大概是80-90像素。我的宽度属性被忽略。窗口内的所有内容也不大于 70 像素。

即使当我尝试使用手柄调整窗口大小时,它也不会让我将其大小调整到特定宽度以下。是否有某种原因 WPF 不允许我将窗口的宽度设置得更小?每个窗口是否都有隐藏的最小宽度值?我该如何解决这个问题?

编辑:当我将 WindowsStyle="None" 添加到 Window 属性中时,宽度正确设置为 70 像素。但是,这不是我想要的 Window 样式。

谢谢

Aks*_*y J 4

您已设置MinWidth为 70,因此您的大小Window不能小于该值。顺便说一句,由于控制框的原因,它的宽度似乎有最小限制 132。

如果我们设置WindowStyle="none" 删除标题和控制框,我们可以将其变得Window更小。

<Window x:Class="WpfApplicationUnleashed.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:local="clr-namespace:WpfApplicationUnleashed"
        Title="" WindowStyle="None" Width="70">
    <Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

编辑

要使窗口宽度为 70,同时关闭按钮、标题文本仍然可见并且不调整大小,请使用以下命令:

<Window x:Class="WpfApplicationUnleashed.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:local="clr-namespace:WpfApplicationUnleashed"
        Title="My Window" WindowStyle="ToolWindow" Width="70" ResizeMode="NoResize">
    <Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

由于 70 的宽度非常小,因此您不能同时具有最小化和最大化按钮以及关闭按钮。