我有一个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>
答案 0 :(得分:1)
您应该用StackPanel替换VirtualizingStackPanel。
根据MSDN:
“虚拟化”一词指的是用户子集的技术 接口(UI)元素是从大量数据生成的 基于哪些项目在屏幕上可见的项目。生成许多UI 屏幕上只有少数元素可能会产生不利影响 影响您的应用程序的性能。 VirtualizingStackPanel 计算可见项目的数量并使用 ItemsControl中的ItemContainerGenerator(例如ListBox或 ListView)仅为可见项创建UI元素。
因此,在这种情况下,由于面板中的项目很少,因此不需要它。