WPF 网格 - 在 window 调整大小时缩小一列以将所有内容保留在屏幕上
WPF Grid - Shrink one column on window resize to keep all content on screen
我在 WPF 中有一个显示一些动态数据的 5 列网格。第 1、2 和 4 列是固定宽度的,因为它们实际上是标签,但第 2 和 5 列可以有不同的长度。
第 3 列应该换行以确保显示所有内容,但可以扩展到最大宽度 390。但是第 5 列应该保留在一行中。当我调整 window 的大小时,所有内容都必须保留在屏幕上而没有水平滚动条。中间(第 3)列应缩小以保留屏幕上的第 4 和第 5 列。
当前行为:当内容超出 390 时,第 3 列将换行,但调整 window 不会导致此列调整大小,但会导致第 5 列然后第 4 列从屏幕上消失。
目前的代码如下:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Grid x:Name="ListItemControl"
Grid.Column="0"
MinHeight="50"
Width="auto"
VerticalAlignment="Top">
<Border Background="LightBlue"
Margin="1,0,1,1" />
<Grid VerticalAlignment="Center"
Margin="20,0,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40" />
<ColumnDefinition Width="130" />
<ColumnDefinition Width="*"
SharedSizeGroup="col2" />
<ColumnDefinition Width="150" />
<ColumnDefinition Width="auto"
SharedSizeGroup="col4" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition MinHeight="50" />
</Grid.RowDefinitions>
<TextBlock Grid.Column="0"
Grid.Row="0"
Margin="0,10,0,10"
Text="Due" />
<TextBlock Grid.Column="1"
Grid.Row="0"
Margin="0,10,10,10"
Text="Some Date" />
<TextBlock Grid.Column="2"
Grid.Row="0"
Margin="0,10,30,10"
Text="There is some potentially long text here. This is a placeholder and should wrap."
TextWrapping="Wrap"
MaxWidth="390" />
<TextBlock Grid.Column="3"
Grid.Row="0"
Margin="0,10,10,10"
Text="Who's responsible" />
<TextBlock Grid.Column="4"
Grid.Row="0"
Margin="0,10,10,10"
Text="Name - could be a very long name" />
</Grid>
</Grid>
</Grid>
非常感谢任何帮助!
您的 ListItemControl
网格位于另一个只有一列的网格内,不知道原因。删除那个父网格,你就完成了。
我在 WPF 中有一个显示一些动态数据的 5 列网格。第 1、2 和 4 列是固定宽度的,因为它们实际上是标签,但第 2 和 5 列可以有不同的长度。
第 3 列应该换行以确保显示所有内容,但可以扩展到最大宽度 390。但是第 5 列应该保留在一行中。当我调整 window 的大小时,所有内容都必须保留在屏幕上而没有水平滚动条。中间(第 3)列应缩小以保留屏幕上的第 4 和第 5 列。
当前行为:当内容超出 390 时,第 3 列将换行,但调整 window 不会导致此列调整大小,但会导致第 5 列然后第 4 列从屏幕上消失。
目前的代码如下:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Grid x:Name="ListItemControl"
Grid.Column="0"
MinHeight="50"
Width="auto"
VerticalAlignment="Top">
<Border Background="LightBlue"
Margin="1,0,1,1" />
<Grid VerticalAlignment="Center"
Margin="20,0,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40" />
<ColumnDefinition Width="130" />
<ColumnDefinition Width="*"
SharedSizeGroup="col2" />
<ColumnDefinition Width="150" />
<ColumnDefinition Width="auto"
SharedSizeGroup="col4" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition MinHeight="50" />
</Grid.RowDefinitions>
<TextBlock Grid.Column="0"
Grid.Row="0"
Margin="0,10,0,10"
Text="Due" />
<TextBlock Grid.Column="1"
Grid.Row="0"
Margin="0,10,10,10"
Text="Some Date" />
<TextBlock Grid.Column="2"
Grid.Row="0"
Margin="0,10,30,10"
Text="There is some potentially long text here. This is a placeholder and should wrap."
TextWrapping="Wrap"
MaxWidth="390" />
<TextBlock Grid.Column="3"
Grid.Row="0"
Margin="0,10,10,10"
Text="Who's responsible" />
<TextBlock Grid.Column="4"
Grid.Row="0"
Margin="0,10,10,10"
Text="Name - could be a very long name" />
</Grid>
</Grid>
</Grid>
非常感谢任何帮助!
您的 ListItemControl
网格位于另一个只有一列的网格内,不知道原因。删除那个父网格,你就完成了。