[WinRT] WinRT ListView 开 Data Virtualization 与 Custom Control 的陷阱

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 就可以解决这个蠢问题就是~ (叹)