WPF 窗口小于 XAML 中定义的窗口

Zel*_*los 4 .net c# wpf xaml visual-studio

我正在尝试创建一个大小为 300x300 的二次窗口。但窗口的大小似乎没有反映我在 XAML 中写入的内容。例如,我创建了一个全新的窗口并设置

Height="300" Width="300"
Run Code Online (Sandbox Code Playgroud)

我没有更改或添加任何其他内容。该窗口在设计器中正确显示为 300x300。但是当我运行该程序时,我得到一个 284x291 的窗口。为什么?如果我将其设置为 309x316,窗口将变为 300x300。

这确实是一个大问题,因为现在控制实际上已经越界了。我设计了这个窗口:

主窗口设计器

<Window ...
    Title="MainWindow" Height="150" Width="300">
<Grid>
    <StackPanel Margin="10">
        <TextBox Margin="0,0,0,10" Text="Textbox"/>
        <TextBox Margin="0,0,0,10" Text="Textbox"/>
        <TextBox Margin="0,0,0,10" Text="Textbox"/>
        <Button Content="Test"/>
    </StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)

但实际的窗口是这样的:

窗口实际值

我是否应该将随机像素值添加到高度,直到它适合窗口?我真的不明白为什么尺寸不同以及我应该如何处理它。

Ora*_*ace 5

我得到一个 284x291 的窗口。为什么?

提供的尺寸 (300x300)只是建议值。

我应该添加随机像素吗?

不,您应该尽可能认为您的应用程序与像素无关。

无论如何,就您的情况而言,您可能想要制作一个类似弹出窗口的窗口,不可调整大小且大小适合内容

<Window x:Class="WpfApp1.MainWindow"
        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"
        mc:Ignorable="d"
        Title="MainWindow"
        ResizeMode="NoResize"
        SizeToContent="Height"
        Width="300">
    <Grid>
        <StackPanel Margin="10">
            <TextBox Margin="0,0,0,10" Text="Textbox"/>
            <TextBox Margin="0,0,0,10" Text="Textbox"/>
            <TextBox Margin="0,0,0,10" Text="Textbox"/>
            <Button Content="Test"/>
        </StackPanel>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)