(本文要感謝Microsoft公司的Neil Ni的幫助。)
其實這個是Microsoft在設計上的一個考慮。因爲這些界面元素主要目的是呈現(對我這個控件來講,取值經過屬性CheckedValues,若是您試圖遍歷這些子控件,可能會發現一些子控件甚至都沒有加入Visual Tree),若是ListBox裏面Item不少的話,一會兒都拿出來就可能會影響性能。
若是您必定須要讓全部Item都工做順利,且不介意性能上面的些許損失的話,那麼請您爲該控件加上VirtualizingStackPanel.IsVirtualizing="False"這個屬性。這樣一來,就能順利解決這個問題了。
1
<
common
:
CheckListBox
Name
="chkTest"
ItemsSource
="{
Binding
}"
ItemValuePath
="FunctionId"
ItemContentPath
="FunctionName"
VirtualizingStackPanel.IsVirtualizing
="False"
Height
="100"
Width
="100" />
其它代碼都沒有任何改動,請參考本文上面提到的第二十三篇文章。