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中的列寬要先賦值,再設置為無效值,直接設置為無效值不會起作用。究竟是什么道理,我沒有弄明白。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM