zoukankan      html  css  js  c++  java
  • WPF学习笔记(3):ListView根据内容自动调整列宽

    DataGrid中,只要不设置DataGrid的宽度和列宽度,或者将宽度设置为Auto,那么表格就会根据内容自动调整宽度,以显示所有内容。但如果是ListView,按以上方法设置,却达不到列宽自动调整的效果, 列宽在控件第一次加载的时候已经确定,之后不会随着某列数据长度的增加和减少而改变列宽。找了很多方法,感觉下面的方法比较简单和实用,在每次增加或者删除数据集合的时候,将 GridViewColumn 的 Width 属性 设置为 无效值,触发其自适应效果。

    原贴地址:https://blog.csdn.net/djc11282/article/details/42261677

    原作者:djc11282

    原贴代码:

     1 GridView gv = lvTrans.View as GridView;
     2  if (gv != null)
     3 {
     4        foreach (GridViewColumn gvc in gv.Columns)
     5         {
     6                gvc.Width = gvc.ActualWidth;
     7                gvc.Width = Double.NaN;
     8          }
     9 }

    因为从 C# 7.0 开始,is 语句支持模式匹配,可执行简单的类型计算和转换。使用类型模式执行模式匹配时,is 会测试表达式是否可转换为指定类型,如果可以,则将其转换为该类型的一个变量。代码使用 is 语句更为简洁,同时对列宽直接赋值应该更简捷,所以我略作了修改:

     1 //使listview根据内容自动调整宽度
     2 if (lvTrans.View is GridView gv)
     3 {
     4        foreach (GridViewColumn gvc in gv.Columns)
     5        {
     6               gvc.Width = 100;
     7               gvc.Width = Double.NaN;
     8         }
     9 }  
    ListView中的列宽要先赋值,再设置为无效值,直接设置为无效值不会起作用。究竟是什么道理,我没有弄明白。
  • 相关阅读:
    C++窗体应用程序
    C++继承方式简介及公有继承
    C++(继承的基本概念和语法)
    python(12)---科赫特雪花
    python(11)---pyinstaller
    20200914 day9 数据结构复习(一)
    20200914 day9 刷题记录
    20200913 day8模拟(二)
    20200912 day7 刷题记录
    20200912 day7 图论复习(一)
  • 原文地址:https://www.cnblogs.com/lylgt/p/10230194.html
Copyright © 2011-2022 走看看