(本文要感谢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" />
  其它代码都没有任何改动,请参考本文上面提到的第二十三篇文章。