【发布时间】:2016-05-11 00:17:48
【问题描述】:
我想将网格视图的列调整为 ListView 的内容。有 XAML 代码:
<ListView x:Name="listViewStatEntries"
AlternationCount="2" Grid.Row="8" Grid.ColumnSpan="3" Background="White"
ItemsSource="{Binding StatResult.StatEntries}" >
<ListView.View>
<GridView>
<GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Param.Speciality}">
<GridViewColumn.Header>
<GridViewColumnHeader Content="{Binding Labels[2851]}" Tag="Param.Speciality" Click="listViewStatEntriesColumnHeader_Click" Width="Auto" />
</GridViewColumn.Header>
</GridViewColumn>
<GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Alarm}">
<GridViewColumn.Header>
<GridViewColumnHeader Content="{Binding Labels[2765]}" Tag="Alarm" Click="listViewStatEntriesColumnHeader_Click" Width="Auto" />
</GridViewColumn.Header>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
我找到了这个帖子:Force resize of GridView columns inside ListView 并尝试 Oskar 解决方案:
public void AutoSizeColumns()
{
GridView gv = listView1.View as GridView;
if (gv != null)
{
foreach (var c in gv.Columns)
{
// Code below was found in GridViewColumnHeader.OnGripperDoubleClicked() event handler (using Reflector)
// i.e. it is the same code that is executed when the gripper is double clicked
if (double.IsNaN(c.Width))
{
c.Width = c.ActualWidth;
}
c.Width = double.NaN;
}
}
}
但使用此解决方案,列的大小仅被调整为可见内容,而不是所有数据到 ListView 中。如何将列大小调整为所有数据?
提前感谢您的帮助!
【问题讨论】:
-
你的意思是所有列的宽度都应该是最长的吗?
-
嗨,StepUp。我需要将每列的大小调整为它的内容。该方法适用于此,但仅适用于可见项,而不适用于整个列。我想调整每列的大小以查看最长的项目!
标签: c# wpf listview gridview resize