【发布时间】:2017-09-17 04:41:33
【问题描述】:
我正在尝试制作一个非常简单的两列窗口,其中右列从宽度 150 开始,最小宽度为 150,左列填充剩余空间,最小宽度为 300,并且GridSplitter 允许调整两列的大小。
我在这里遇到了两个问题。
当尝试将 GridSplitter 向左拖动超过左列的 MinWidth 允许的范围时,GridSplitter 会按预期停止,但右列会继续增长并溢出窗口的右边界并被剪裁。
1234563 5-10 像素),导致右列的一些内容被剪裁。
是否需要进行一些简单的更改才能使其正常运行?
<Window x:Class="CustomLabels.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"
xmlns:local="clr-namespace:CustomLabels"
mc:Ignorable="d"
Title="Custom Labels" Height="350" Width="550" MinWidth="455" MinHeight="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="300" />
<ColumnDefinition Width="5" />
<ColumnDefinition Width="150" MinWidth="150" />
</Grid.ColumnDefinitions>
<TextBox x:Name="textBox" Height="23" Margin="81,14,90,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Grid.Column="0"/>
<Label x:Name="label" Content="Order No." HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" FontWeight="Bold" Grid.Column="0"/>
<Button x:Name="button" Content="Load" Margin="0,14,10,0" VerticalAlignment="Top" Height="23" HorizontalAlignment="Right" Width="75" Grid.Column="0"/>
<GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Center" VerticalAlignment="Stretch" />
<Label x:Name="label1" Content="Label" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" FontWeight="Bold" Width="47" Grid.Column="2" />
<ListBox x:Name="listBox" Margin="10,41,10,10" IsSynchronizedWithCurrentItem="True" Grid.Column="2" />
</Grid>
</Window>
请注意,我已尝试实现this question 中显示的解决方案,但当我希望 right 列以固定宽度开始时,它似乎没有任何效果。
【问题讨论】:
-
@BradleyUffner 这个问题似乎没有解决我也看到的窗口 MinWidth 问题。
-
我建议将其拆分为单独的问题。它们可能有不同的原因。
-
@BradleyUffner 另外值得注意的是,我尝试在该问题中实施解决方案,但是当我希望 right 列成为时,它似乎没有达到预期的效果以固定宽度开始的那个。将拆分器向左拖动时,我仍然看到相同的增长/削波。
-
尝试将第二列的默认宽度设置为星标。这解决了我的问题。