WPF网格 - 在窗口上缩小一列调整大小以保留屏幕上的所有内容

时间:2016-05-20 12:31:30

标签: wpf xaml grid resize

我在WPF中有一个5列网格,显示一些动态数据。第1,2和4列是固定宽度,因为它们是有效标签,但2和5可以是不同长度。

第3列应该换行以确保显示所有内容但可以扩展到最大宽度390.但是第5列应该保留在一行上。当我调整窗口大小时,所有内容都必须保留在屏幕上而没有水平滚动条。中间(第3)列应缩小以保持屏幕上的第4和第5列。

当前行为:第3列将在内容扩展到390以后进行换行,但调整窗口大小不会导致此列调整大小,但会导致第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>  

任何帮助都非常感谢!

1 个答案:

答案 0 :(得分:0)

你的ListItemControl网格位于另一个有一列的网格中,不知道原因。删除那个父网格,你就完成了。