最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

WPF DataGrid Scrolling Too Slowly - Stack Overflow

programmeradmin2浏览0评论

I have a WPF DataGrid with some rows, where some of them have an images column that displays a lot of images, which i suspect is what's causing my DataGrid to scroll slowly, but I'm not sure how to solve it.

Here's my code:

<UserControl x:Class="InventoryManager.ItemsTab"
             xmlns=";
             xmlns:x=";
             xmlns:mc="; 
             xmlns:d="; 
             xmlns:local="clr-namespace:InventoryManager"
             xmlns:converters="clr-namespace:InventoryManager.Converters"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800">
    <UserControl.Resources>
        <converters:ByteArrayToImageConverter x:Key="ByteArrayToImageConverter"/>
    </UserControl.Resources>
    <Grid>
        <DataGrid VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling" ItemsSource="{Binding Items}" AutoGenerateColumns="False" IsReadOnly="True">
            <DataGrid.Columns>
                <DataGridTextColumn Width="Auto" Header="Item ID" Binding="{Binding ItemID}"/>
                <DataGridTextColumn Header="Type" Binding="{Binding Type}" />
                <DataGridTemplateColumn Header="Description">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
                                <TextBlock Text="{Binding Description}" TextWrapping="Wrap" MaxWidth="300"/>
                            </ScrollViewer>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTextColumn Header="Purchase Price" Binding="{Binding PurchasePrice, StringFormat=C}"/>
                <DataGridTextColumn Header="Sold Price" Binding="{Binding SalePrice, StringFormat=C}"/>
                <DataGridTextColumn Header="M Price" Binding="{Binding MPrice, StringFormat=C}"/>
                <DataGridTextColumn Header="N Price" Binding="{Binding NPrice, StringFormat=C}"/>
                <DataGridTemplateColumn Header="Note">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
                                <TextBlock Text="{Binding Note}" TextWrapping="Wrap" MaxWidth="300"/>
                            </ScrollViewer>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTextColumn Header="Supplier" Binding="{Binding Supplier.Name}"/>
                <DataGridTextColumn Header="Customer" Binding="{Binding Customer.Name}"/>
                <DataGridTemplateColumn Header="Images">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Grid>
                                <VirtualizingStackPanel IsVirtualizing="True" VirtualizationMode="Recycling" Width="1200" Height="400"/>
                                <ItemsControl ItemsSource="{Binding Images}">
                                    <ItemsControl.ItemsPanel>
                                        <ItemsPanelTemplate>
                                            <UniformGrid Columns="6"/>
                                        </ItemsPanelTemplate>
                                    </ItemsControl.ItemsPanel>
                                    <ItemsControl.ItemTemplate>
                                        <DataTemplate>

                                            <Image Width="200" Height="200"
Source="{Binding ImageData, Converter={StaticResource ByteArrayToImageConverter}}"
ToolTip="{Binding FileName}"/>

                                        </DataTemplate>
                                    </ItemsControl.ItemTemplate>
                                </ItemsControl>


                            </Grid>
                            
                            
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
            
        </DataGrid>
    </Grid>
</UserControl>

I tried using Virtualization as shown above but that doesn't seem to fix the problem.

发布评论

评论列表(0)

  1. 暂无评论