1

ContextMenu の項目数が 3000 のような数になった状況に陥っています。このシナリオでは、ContextMenu 自体の読み込みに時間がかかります。UI 仮想化を実行しようとしていますが、うまくいきません。

サンプルコードは次のとおりです。

 <RichTextBox x:Name="FMWpfPopupControlHost" ScrollViewer.CanContentScroll="True" VirtualizingStackPanel.IsVirtualizing="True"  HorizontalAlignment="Left" Width="300" Height="600" Focusable="True" Loaded="onLoaded1">
        <RichTextBox.ContextMenu >
            <ContextMenu VirtualizingStackPanel.IsVirtualizing="True" ItemsSource="{Binding GetLabel, Source ={StaticResource model}}" ScrollViewer.CanContentScroll="True">
                <ContextMenu.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Initialized="TextBlock_Initialized" Text="{Binding getLabel}"/>
                    </DataTemplate>
                </ContextMenu.ItemTemplate>
                <ContextMenu.ItemsPanel>
                    <ItemsPanelTemplate>
                        <VirtualizingStackPanel IsItemsHost="True" IsVirtualizing="True" VirtualizationMode="Recycling"/>                        
                    </ItemsPanelTemplate>
                </ContextMenu.ItemsPanel>
                <ContextMenu.Template>
                    <ControlTemplate>
                        <Border BorderThickness="{TemplateBinding Border.BorderThickness}" Padding="{TemplateBinding Control.Padding}" BorderBrush="{TemplateBinding Border.BorderBrush}" Background="{TemplateBinding Panel.Background}" SnapsToDevicePixels="True">
                            <ScrollViewer Padding="{TemplateBinding Control.Padding}" Focusable="False">
                                <ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
                            </ScrollViewer>
                        </Border>
                    </ControlTemplate>
                </ContextMenu.Template>
            </ContextMenu>
        </RichTextBox.ContextMenu>
    </RichTextBox>

この問題を解決する方法を教えてください。

ありがとう!

ハーシュ・グプタ

4

0 に答える 0