我正在尝试创建一个非常简单的双列窗口,其中右列从宽度150开始,最小宽度为150,左列填充剩余空间,最小宽度为300,并且GridSplitter允许调整两列的大小。
我在这里遇到两个问题。
当尝试将GridSplitter向左拖动多于左列的MinWidth允许时,GridSplitter会按预期停止,但右列会不断增长并溢出窗口的右边界并被剪裁。
当为窗口本身指定MinWidth(它等于两个内容列的MinWidth加上GridSplitter的列)时,我可以调整窗口大小比我应该的小一些(也许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 列以固定宽度开始时,它似乎没有任何效果。
答案 0 :(得分:2)
愚蠢的XAML诀窍来救援。这看起来有点愚蠢,但给出了足够接近预期结果的东西:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" MinWidth="300" />
<ColumnDefinition Width="5" />
<ColumnDefinition Width="0*" MinWidth="150" />
</Grid.ColumnDefinitions>
...
</Grid>
我猜这是在说“尽量使用尽可能少的空间,但不要低于150,这最终会成为列的起始大小。
缩小窗户时,我仍然在剪裁;这可能是对填充和/或边际的某种误解。