我在WPF中创建了以下窗口。这就是它的表现方式:
我不知道为什么屏幕显示得那么大,我不知道如何调试它为什么会这么宽。
这是与问题相关的代码:
<Window x:Class="Picis.CpCustomize.CustomizeControls.Dialogs.EditIntegerWindow"
MinWidth="350"
SizeToContent="Height"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
ResizeMode="CanResize"
ShowInTaskbar="False"
WindowStartupLocation="CenterScreen"
WindowState="Normal"
Loaded="OnWindowLoaded">
<!-- Main frame -->
<Grid>
<!-- Layout -->
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock VerticalAlignment="Center" MinWidth="100" TextAlignment="Right">
<TextBlock.Text>
<Binding Converter="{StaticResource Localizer}" ConverterParameter="General.Value" />
</TextBlock.Text>
</TextBlock>
<TextBox x:Name="valueTextBox" Grid.Column="1" Margin="5" Text="{Binding Path=Value}"/>
<TextBlock VerticalAlignment="Center" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Right" Visibility="{Binding Path=ShowComments, Converter={StaticResource VisiConv}, ConverterParameter=Collapse}" MinWidth="100" TextAlignment="Right">
<TextBlock.Text>
<Binding Converter="{StaticResource Localizer}" ConverterParameter="EditParamDlg.Comment" />
</TextBlock.Text>
</TextBlock>
<TextBox x:Name="commentTextBox" Grid.Row="1" Grid.Column="1" Margin="5" Visibility="{Binding Path=ShowComments, Converter={StaticResource VisiConv}, ConverterParameter=Collapse}" Text="{Binding Path=Comment}"/>
<CheckBox Grid.Row="2" Grid.Column="1" Margin="5" x:Name="isDeletedCheckBox" Visibility="{Binding Path=ShowIsDeleted, Converter={StaticResource VisiConv}, ConverterParameter=Collapse}"
IsChecked="{Binding Path=IsDeleted}">
<CheckBox.Content>
<Binding Converter="{StaticResource Localizer}" ConverterParameter="EditParamDlg.IsDeleted" />
</CheckBox.Content>
</CheckBox>
<UniformGrid Grid.Row="3" Grid.Column="1" Margin="5" HorizontalAlignment="Right" Columns="2">
<Button x:Name="okButton" Click="OnOk" IsDefault="True">
<Button.Content>
<Binding Converter="{StaticResource Localizer}" ConverterParameter="General.Ok" />
</Button.Content>
</Button>
<Button x:Name="cancelButton" Click="OnCancel" Margin="5,0,0,0" IsCancel="True">
<Button.Content>
<Binding Converter="{StaticResource Localizer}" ConverterParameter="General.Cancel" />
</Button.Content>
</Button>
</UniformGrid>
</Grid>
</Window>
我的第一个问题是如何调试此问题,第二个问题是此特定情况下发生的情况。
提前致谢。
答案 0 :(得分:2)
您明确将窗口设置为以宽度拉伸:
SizeToContent="Height"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
这就是说,“让窗户尽可能宽阔,然后调整到高度的内容”
如果你删除它,并将宽度和高度设置为“自动”(或省略),你可能会得到你想要的。尝试删除所有这三行(这将排除对齐,可能导致使用“自动”的默认宽度/高度。)
答案 1 :(得分:2)
此问题与以下内容重复:Why are my WPF window sizes defaulting to be huge
并根据:Window Size when SizeToContent is not specified未指定时的默认大小为主屏幕宽度的60%和高度的60%。
答案 2 :(得分:1)
<Window HorizontalAlignment="Stretch"
这就是问题,我想。
答案 3 :(得分:1)
对我来说似乎是这个:
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
它挡住了窗户......
答案 4 :(得分:1)
窗口上的对齐不应该真正做任何事情,因为没有容器可以引用,但是你只告诉窗口收缩到高度的内容,我会将这种行为改为两个维度:
SizeToContent="WidthAndHeight"
如何调试此类事情?也许训练你的大脑能够解析XAML并在飞行中进行布局......我知道,不是很有帮助。
答案 5 :(得分:0)
也许这填补了现有空间(就像它应该的那样)。
<ColumnDefinition Width="*"/>