2013-04-05 41 views
1

我有一個WPF擴展器控件,當應用程序在XP機器上運行時(XP與SP3)運行時不會呈現擴展器頭部內容,當在Win7機器上運行內容時如預期。WPF Expander控制頭不在XP機器上渲染

擴展器頭是一個虛擬化的堆棧面板(水平),裏面有幾個文本塊。

當我使用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

您是否嘗試使用StackPanel而不是VirtualizingStackPanel – mathieu 2013-04-05 14:44:27

+0

它可以在您交換到StackPanel時運作 – AwkwardCoder 2013-04-05 14:49:12

+0

已將其添加爲詳細的答案 – mathieu 2013-04-05 14:58:10

回答

1

你應該通過一個StackPanel更換VirtualizingStackPanel。

根據MSDN

「虛擬化」一詞指的是由哪個用戶 接口的子集(UI)元素從數據的較大數量的生成的基於 物品上哪些項目是一個技術在屏幕上可見。當屏幕上只有少數幾個元素時,可能會生成很多UI ,這會對您的應用程序的性能產生不利影響 。 VirtualizingStackPanel 計算可見項目的數量,並與ItemsControl(如ListBox或 ListView)中的ItemContainerGenerator一起使用,以僅爲可見項目創建UI元素。

所以在這種情況下,由於面板內的物品很少,所以不需要。