1

アプリが XP マシン (XP with SP3) で実行されているときにエキスパンダー ヘッダー コンテンツをレンダリングしない WPF エキスパンダー コントロールがあります。Win7 マシンで実行すると、コンテンツは期待どおりにレンダリングされます。

エキスパンダー ヘッダーは、内部にいくつかのテキスト ブロックを含む仮想化されたスタック パネル (水平) です。

スヌープを使用して調査すると、予想されるテキストが表示され、フォントの色が黒であることがわかります。つまり、白い背景に白いテキストではありません。

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

VirtualizingStackPanel を StackPanel に置き換える必要があります。

MSDNによると:

「仮想化」という言葉は、ユーザー インターフェイス (UI) 要素のサブセットが、画面上に表示される項目に基づいて多数のデータ項目から生成される手法を指します。画面に少数の要素しか表示されない場合に多くの UI 要素を生成すると、アプリケーションのパフォーマンスに悪影響を与える可能性があります。VirtualizingStackPanel は、表示されるアイテムの数を計算し、ItemsControl (ListBox や ListView など) の ItemContainerGenerator と連携して、表示されるアイテムのみの UI 要素を作成します。

したがって、この場合、パネル内に項目がほとんどないため、必要ありません。

于 2013-04-05T14:57:58.170 に答える