如何自动设置数据绑定ListView的列的宽度

时间:2009-01-15 03:15:44

标签: wpf listview

我有一个数据绑定列表视图,可以手动设置所有列宽,除了最后一个。最后一个字段的数据长度变化很大。最后一列需要扩展以处理数据的宽度,如果更大的滚动。我已经尝试将最后一列的宽度设置为一个非常大的数字,但是这会驱动列标题离开页面。如何计算最后一列显示数据所需的最小宽度,以及它是否很大以保持页面上的列标题?

<ListView x:Name="ListViewFlightPlans" Background="#FF000000" IsSynchronizedWithCurrentItem="True" Width="659.5" Height="Auto" 
                      Foreground="#FFFDF3F3"  BorderBrush="{x:Null}" VerticalAlignment="Bottom" Visibility="Hidden" >
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="CID" DisplayMemberBinding="{Binding Path=CID}" Width="50"/>
                        <GridViewColumn Header="Callsign" DisplayMemberBinding="{Binding Path=ACID}" Width="65"/>
                        <GridViewColumn Header="Type" DisplayMemberBinding="{Binding Path=Type}" Width="65"/>
                        <GridViewColumn Header="Route" DisplayMemberBinding="{Binding Path=Route}" Width="900 e"/>
                    </GridView>
                </ListView.View>
            </ListView>

2 个答案:

答案 0 :(得分:1)

由于您的标题离开了页面,我认为您的标题是中心对齐或右对齐。左对齐标题以使其保持不变(您可以在左侧添加填充以伪造居中或右对齐的标题)。

使用Width =“Auto”可以根据列中最宽的项目扩展列的宽度。

示例:

<GridViewColumn Header="Route" DisplayMemberBinding="{Binding Path=Route}" 
     Width="Auto"
     HeaderContainerStyle="{StaticResource WideColumnHeader}"
/>
...
‹!--Somewhere in your resources--›
...
‹Style x:Key="WideColumnHeader" TargetType="{x:Type GridViewColumnHeader}"›
   ‹Setter Property="HorizontalContentAlignment" Value="Left" /›
   ‹Setter Property="Padding" Value="40,0,0,0"
‹/Style›
...

答案 1 :(得分:0)

您可以尝试使用%代替像素,也许可以将60%分配给最后一列,而剩余的40%可以用于前3列....(未经测试的猜测)。