WPF Expander控件头不能在XP机器上呈现

时间:2013-04-05 13:58:41

标签: wpf windows-xp rendering

我有一个WPF扩展器控件,当应用程序在XP机器(带SP3的XP)上运行时,它不呈现扩展器头内容,当在Win7机器上运行时,内容按预期呈现。

扩展器头是一个虚拟化堆栈面板(水平),里面有几个文本块。

当我使用snoop进行调查时,我可以看到预期的文字,字体颜色是黑色的 - 所以它不是白色背景上的白色文字。

任何人都知道为什么它不能在XP上渲染?

标题模板:

<Expander.Header>
   <VirtualizingStackPanel Orientation="Horizontal">
      <Controls2:HighlightTextBlock Style="{StaticResource RegularTextStyle}"
                                    Text="{Binding Name, Mode=OneWay}"
                                    Margin="10,0,0,0"
                                    HighlightText="{Binding RelativeSource=RelativeSource FindAncestor, AncestorType={x:Type Controls2:ViewHost}}, Path=DataContext.SearchText}"
                                    Foreground="{StaticResource Jedi.HighlightForegroundTextBrush}"
                                    HighlightBackground="{StaticResource Jedi.HighlightBackgroundTextBrush}"/>
      <TextBlock Margin="15,0,0,0">
         <Run Text="(" />
         <Run Text="{Binding Id, Mode=OneWay}"></Run>
         <Run Text=")"/>
      </TextBlock>
   </VirtualizingStackPanel>
</Expander.Header>

1 个答案:

答案 0 :(得分:1)

您应该用StackPanel替换VirtualizingStackPanel。

根据MSDN

  

“虚拟化”一词指的是用户子集的技术   接口(UI)元素是从大量数据生成的   基于哪些项目在屏幕上可见的项目。生成许多​​UI   屏幕上只有少数元素可能会产生不利影响   影响您的应用程序的性能。 VirtualizingStackPanel   计算可见项目的数量并使用   ItemsControl中的ItemContainerGenerator(例如ListBox或   ListView)仅为可见项创建UI元素。

因此,在这种情况下,由于面板中的项目很少,因此不需要它。