1

我有一个 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>
4

1 回答 1

1

您应该用 StackPanel 替换 VirtualizingStackPanel。

根据MSDN

“虚拟化”一词是指一种技术,通过该技术,用户界面 (UI) 元素的子集根据哪些项目在屏幕上可见而从大量数据项目中生成。当屏幕上可能只有几个元素时生成许多 UI 元素会对应用程序的性能产生不利影响。VirtualizingStackPanel 计算可见项的数量并与 ItemsControl(例如 ListBox 或 ListView)中的 ItemContainerGenerator 一起使用,以仅为可见项创建 UI 元素。

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

于 2013-04-05T14:57:58.170 回答