[WinRT] WinRT ListView 開 Data Virtualization 與 Custom Control 的陷阱

  • 3256
  • 0
  • 2016-02-15

WinRT ListView 開 Data Virtualization 與 Custom Control 的陷阱

之前在嘗試把ListView加上DataVirtulization的效果的時候遇到的一個雷

自己寫了一個控制項用來畫股票的單一K棒的圖,裡面有幾個Dependency Property分別綁定至開高低收,型態是double

這邊以 開 為例,可以看到我特別標示紅線的地方,那邊原先的寫法是簡單的
kbarControl._kBarValue.Open = (double)args.NewValue
但是在套用Data Virtulization後,發現因為會虛擬化,所以他會將控制項回收再利用,這沒什麼,但重點是

它會塞型態是dynamic 的 0 過來
它會塞型態是dynamic 的 0 過來
它會塞型態是dynamic 的 0 過來

因為很重要所以說三次 =.= 一開始想說怎麼會出Exception,不過就是個 0 而已嘛!結果看了一下型態,竟然是 dynamic !!
而那個 0 的 dynamic 對應的型態是 int ,你知道dynamic(int)要assign的時候是不能亂塞的 =.=
所以當我直接 assign 到一個 double的時候,就會出現 InvalidCastException了 Orz

anyway~ 就透過 Convert.ToDouble 就可以解決這個蠢問題就是~ (嘆)