WPF - 为什么我的控件在运行时会被切断?

时间:2017-06-12 14:54:40

标签: wpf

在设计时查看我的窗口显示所有控件都在里面:

Design time, controls appearing normnal.

当我运行应用程序时,表单在运行时看起来像这样: Runtime, controls do not fit.

这是我的XAML:

<Window x:Class="Test_App.BrowseDirectory"
        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:LM_Config_Manager"
        mc:Ignorable="d"
        Title="Browse Directory" Height="114" Width="420" WindowStartupLocation="CenterOwner" ShowInTaskbar="False" ResizeMode="NoResize">
    <Grid >
        <TextBox x:Name="tbPath" HorizontalAlignment="Left" Height="23" Margin="10,25,0,0" TextWrapping="NoWrap" VerticalAlignment="Top" Width="329"/>
        <Button x:Name="bBrowse" Content="Browse" HorizontalAlignment="Left" Margin="344,25,0,0" VerticalAlignment="Top" Width="61" Click="bBrowse_Click"/>
        <Button x:Name="bOK" Content="OK" HorizontalAlignment="Left" Margin="209,55,0,0" VerticalAlignment="Top" Width="75" IsDefault="True" Click="bOK_Click"/>
        <Button x:Name="bCancel" Content="Cancel" HorizontalAlignment="Left" Margin="115,55,0,0" VerticalAlignment="Top" Width="75" IsCancel="True" Click="bCancel_Click"/>
    </Grid>
</Window>

窗口看起来像是在运行时缩小......

是什么导致这种情况发生?

3 个答案:

答案 0 :(得分:1)

您已在Window属性中指定了特定的高度和宽度。更好的选择可能是删除它们并添加

SizeToContent="WidthAndHeight"

查看您的运行时窗口,看起来您应用了一个特定的主题或样式,并没有应用设计时间,这就是两者看起来不同的原因。

答案 1 :(得分:0)

设计者apparentl使用另一个窗口框架,但由于它只是重要的运行时外观,因此您可以在XAML标记中指定Margin的根Grid

<Grid Margin="16">
    <TextBox x:Name="tbPath" HorizontalAlignment="Left" Height="23" Margin="10,25,0,0" TextWrapping="NoWrap" VerticalAlignment="Top" Width="329"/>
    <Button x:Name="bBrowse" Content="Browse" HorizontalAlignment="Left" Margin="344,25,0,0" VerticalAlignment="Top" Width="61" Click="bBrowse_Click"/>
    <Button x:Name="bOK" Content="OK" HorizontalAlignment="Left" Margin="209,55,0,0" VerticalAlignment="Top" Width="75" IsDefault="True" Click="bOK_Click"/>
    <Button x:Name="bCancel" Content="Cancel" HorizontalAlignment="Left" Margin="115,55,0,0" VerticalAlignment="Top" Width="75" IsCancel="True" Click="bCancel_Click"/>
</Grid>

答案 2 :(得分:0)

我通常将窗口最小宽度和最小高度设置为设计器中的宽度和高度。您可以通过设置边距来做到这一点,但这通常太麻烦了。确保您没有超过标准的 Windows 显示器尺寸 1920 x 1080 (1080p) 或对于非常旧的窗口,1024x768。换句话说,尽可能缩小窗口,确保它仍然可用。