0

我需要创建一个显示晶圆图的用户控件,所以我使用了一个具有统一网格的 ListBox,每个单元格代表晶圆中的一个芯片。我遇到的问题是,当模具太多时,例如 100*100 uniformgrid,显示速度会非常慢,而且滚动视图也很慢。下面是我的代码:

<ListBox.ItemsPanel>
                        <ItemsPanelTemplate>
                            <UniformGrid VirtualizingPanel.VirtualizationMode="Recycling" VirtualizingPanel.IsVirtualizing="True" x:Name="WaferMapGrid" Columns="{Binding MapColumnCount}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Rows="{Binding MapRowCount}" Background="AliceBlue" RenderTransformOrigin="0.5,0.5" Loaded="WaferMapGrid_Loaded">
                                <UniformGrid.LayoutTransform>
                                    <ScaleTransform x:Name="WaferMapScaleForm" ScaleX="{Binding Path=Value, ElementName=ZoomSlider}" ScaleY="{Binding Path=Value, ElementName=ZoomSlider}" />
                                </UniformGrid.LayoutTransform>
                            </UniformGrid>
                        </ItemsPanelTemplate>
                    </ListBox.ItemsPanel>
                    <ListBox.Template>
                        <ControlTemplate TargetType="ListBox">
                            <ScrollViewer x:Name="WaferMapScrollViewer" CanContentScroll="True" VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.VirtualizationMode="Recycling" Loaded="WaferMapScrollViewer_Loaded" ScrollChanged="OnScrollViewerScrollChanged" PreviewMouseDown="OnMouseLeftButtonDown" PreviewMouseWheel="WaferMapScrollViewer_PreviewMouseWheel" PreviewMouseMove="OnMouseMove" PreviewMouseUp="OnMouseLeftButtonUp" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" Padding="0">
                                <ScrollViewer.Resources>
                                    <Style TargetType="ScrollBar">
                                        <Style.Triggers>
                                            <Trigger Property="Orientation" Value="Vertical">
                                                <Setter Property="Width" Value="4"/>
                                                <Setter Property="Margin" Value="0,0,0,0"/>
                                            </Trigger>
                                        </Style.Triggers>
                                    </Style>
                                </ScrollViewer.Resources>
                                <ItemsPresenter></ItemsPresenter>
                            </ScrollViewer>
                        </ControlTemplate>
                    </ListBox.Template>
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Grid>
                                <RadioButton x:Name="Die" MinHeight="{Binding ActualWidth,RelativeSource={RelativeSource Self}}" MinWidth="{Binding ActualHeight,RelativeSource={RelativeSource Self}}" Background="{Binding TestState,Converter={StaticResource TestStateConverter}}" BorderBrush="LightGray" BorderThickness="0.5" IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}, Path=IsSelected}" GroupName="DieGroup" Style="{StaticResource DieStyle}" Margin="0" Content="{Binding DisplayText}" >
                                    <RadioButton.ToolTip>
                                        <local:DieInfo></local:DieInfo>
                                    </RadioButton.ToolTip>
                                </RadioButton>
                            </Grid>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

顺便说一句,虚拟化似乎在uniformgird 中不起作用。任何人都知道如何优化我的代码以提高性能?附上我的应用程序的屏幕截图:

在此处输入图像描述

4

0 回答 0