我试图创建一个分为两个部分的窗口:
我注意到有些属性似乎与彼此冲突。即:
Window.Width
属性。ColumnDefinition.MinWidth
属性(特别是第3列)DataGridTextColumn.Width="*"
属性。使用下面XAML中定义的属性值,我注意到最后DataGridTextColumn
的宽度导致父Grid
扩展到考虑右侧{{Grid
的最大允许值1}}的最小宽度。
不过,我的期望是DataGridTextColumn
会填充剩余的可用空间,受DataGrid
约束。
我还注意到DataGridTextColumn
引起的扩展/推送行为只发生在ColumnDefinition.MinWidth
和Window.Width
属性的某些值上(也可以在运行时调整大小)奇怪的'行为'。
我希望位于Grid
旁边的每个顶级Grids
(左侧和右侧GridSplitter
)具有最小宽度,默认宽度为70%,分别占窗口的30%。但我也希望DataGrid
中的最后一列填补剩余的区域。 如果没有DataGrid超出界限,我怎样才能实现这一目标?
<Window x:Class="GridSplitterTest.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:GridSplitterTest"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="7*" MinWidth="160"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="3*" MinWidth="155"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<!-- This is the left Grid -->
<DataGrid Margin="10">
<DataGrid.Columns>
<DataGridTextColumn Header="Column1" MinWidth="60"/>
<DataGridTextColumn Header="Column2" MinWidth="60"/>
<DataGridTextColumn Header="Column3" MinWidth="60"/>
<DataGridTextColumn Header="Column4 (Fill)" MinWidth="90" Width="*"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
<GridSplitter Grid.Column="1" ResizeBehavior="PreviousAndNext" Width="6" Background="Red"/>
<Grid Grid.Column="2">
<!-- This is the right Grid -->
</Grid>
</Grid>
</Window>