繁体   English   中英

如何将ListView / GridView的大小调整为WPF中的内容

[英]How to resize ListView/GridView to contents in WPF

我想将网格视图的列重新调整为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>

我找到了这个帖子: 在ListView中强制调整GridView列的大小并尝试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。 如何将列重新调整为所有数据?

在此先感谢您的帮助 !

他们仅调整可见行的原因是因为您具有虚拟化(默认情况下)。 尝试将其关闭

<ListView VirtualizingStackPanel.IsVirtualizing="False"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM