【问题标题】:WPF window smaller than defined in XAMLWPF 窗口小于 XAML 中定义的窗口
【发布时间】:2021-08-06 18:40:48
【问题描述】:

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

Height="300" Width="300"

我没有更改或添加任何其他内容。该窗口在 Designer 中正确显示为 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>

但实际的窗口是这样的:

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

【问题讨论】:

  • 您不应该真正以像素为单位设置高度/宽度。如果你这样做,它在高 DPI 屏幕上看起来会很糟糕。如果不指定 H/W 会发生什么?你的所有控件都适合吗?
  • @Neil 我有点困惑,为什么在创建新窗口时默认设置在 XAML 中。如果我不指定任何内容,则窗口为 1424x758。我真的很想知道这个数字到底是从哪里来的。

标签: c# .net wpf visual-studio xaml


【解决方案1】:

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

提供的尺寸(300x300)is only a suggested value.

我应该添加随机像素吗?

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

在您的情况下,无论如何,您可能想要制作一个类似窗口的弹出式窗口,不可调整大小且带有size that fit the content

<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>

【讨论】:

  • 谢谢,我想我现在明白了。我只是感到困惑,因为新创建的窗口为这些设置了绝对值。我来自 Winforms,所以我习惯于将窗口拖到我需要的大小。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 2016-06-09
  • 1970-01-01
相关资源
最近更新 更多