程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WPF的DataGrid綁定ItemsSource後第一次加載數據有個別列移位的解決辦法

WPF的DataGrid綁定ItemsSource後第一次加載數據有個別列移位的解決辦法

編輯:關於.NET

最近用WPF的DataGrid的時候,發現一個很弱智的問題,DataGrid的ItemsSource是綁定了一個屬性:

然後取數給這個集合賦值的時候,第一次賦值,就會出現列移位

起初還以為是顯卡的問題,結果今天來集成顯卡的電腦上也一樣出現,具體原因不詳,以下是幾種解 決辦法:

1.(首選,有效果)DataGrid的RowHeaderWidth="0",必須賦值為0,不能不賦值,也不能 賦其他值。

2.(有效果)綁定的源一開始就要賦值,即至少要有一行數據。

3.(效果不一,有的地方有效有的地方無效)不用綁定,每次獲得數據後手動賦ItemsSource的值。

4.(有效,比較繁瑣)把每一條數據封裝成對象,DataGrid封裝成列模板,每一列綁定這個對象的屬 性。

對於使用DataTable還是用集合做為數據源,總結以下幾點:

a)綁定DataTable的DefaultView有幾個個好處:

1.方便,直接取數綁給目標,不需要再轉成集合給目標每一列綁定。

2.易替換,如果要增減列,只需要改取數語句,界面不需改動。

3.相對於轉換成集合來說理論上節省性能。

4.在大數據量下,如果前後兩次獲取的數據源沒有變動,不會重繪UI,而集合的話每次都會重繪。

缺陷:

1.需要代碼設置每一列的列寬,否則UI會很難看,全擠在一起。(代碼設置的過程可能會消耗性能) 。

2.無數據時UI的數據區域什麼都沒有,一片空白,影響用戶體驗。

適用的地方:一般是使用在數據量大、不需要操作數據的地方,只是單純的顯示。

b)綁定集合的好處:

1.UI裡可以直接設置列寬,不需要代碼再設。

2.不存在列位移的現象(至今未發現)。

3.無數據時UI上也會有列頭。

4.可以靈活使用列模板。

缺陷:

1.UI和集合數據列綁死,增減列需要動UI。

2.取到數據之後還要轉換成集合,理論上耗能。

3.步驟繁瑣,需要將數據條目封裝成對象,如果字段很多就煩了。

適用的地方:數據量不大、需要操作數據,比如要加一列CheckBox標識選中,加列ComBox提供候選等 。

作者: 熱卡

出處:http://www.cnblogs.com/zoexia/

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved