MenuItem 导致应用程序变慢

问题描述 投票:0回答:1

我有一个显示我的数据的 DataGrid(该集合包含不止一种类型的数据, 我为每种类型编写了一个 DataTemplate)。基本上,我的 DataGrid 的作用就像一个属性网格。

通常,使用数据网格的速度非常快。每次我更改数据网格集合时,它的加载速度都会很快。

我的问题是,当我显示某些菜单项(在上下文菜单或菜单中)时,它会导致应用程序笨拙且运行缓慢。我的数据网格速度很慢。

我确信速度缓慢是由菜单项引起的。

这是一个已知的错误吗?我究竟做错了什么?有人吗?

这是 DataGrid 代码

  <DataGrid Name="propsDataGrid" Grid.Row="0" AutoGenerateColumns="False" Background="#FFA9BFD4" RowBackground="#FFCADBE7"
              VirtualizingStackPanel.IsVirtualizing="True" ItemsSource="{Binding Properties}">
        <DataGrid.Columns>
      <!--<DataGridTextColumn  Header="Name" IsReadOnly="true"   Width="100" MinWidth="22"  Binding="{Binding DisplayName,Converter={StaticResource propertyNameToDiplayNameConverter}}" />-->
            <DataGridTemplateColumn Header="Name" IsReadOnly="true"   Width="100" MinWidth="22" >
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Grid>
                            <Border  Background="#FFA9BFD4" 
                                     Visibility="{Binding IsCategoryItem,Converter={StaticResource boolToVisibilityConverter}}"> 
                                <Expander Template="{StaticResource SimpleExpanderTemp}"  ExpandDirection="Left" 
                                     IsExpanded="{Binding IsExpanded, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Margin="3,0,5,0"/>
                            </Border>
                            <TextBlock   Text="{Binding DisplayName,Converter={StaticResource propertyNameToDiplayNameConverter}}"/>
                                        <!--Visibility="{Binding IsCategoryItem,Converter={StaticResource boolToVisibilityConverter},ConverterParameter=VisForFalse}"/>-->
                        </Grid>
                     </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn Header="Property" IsReadOnly="true"   Width="1*" MinWidth="22" >
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ContentControl Background="#FFA9BFD4"  Content="{Binding Converter={StaticResource uiPropertyViewModelToObjConverter}}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

        </DataGrid.Columns>
    </DataGrid>

这是菜单项代码:

  <Menu  Background="Transparent">
        <MenuItem Header="File">
            <MenuItem Header="New"  Command="{Binding Source={x:Static ns:ApplicationCommands.NewProject}}"/>
            <MenuItem Header="Load"  Command="{Binding Source={x:Static ns:ApplicationCommands.LoadProject}}"/>
            <MenuItem Header="Add scene" Command="{Binding Source={x:Static ns:ApplicationCommands.AddScene}}"/>
            <MenuItem Header="Export" Command="{Binding Source={x:Static ns:ApplicationCommands.ExportProject}}"/>
            <!--<MenuItem Header="Import" Command="{Binding Source={x:Static ns:ApplicationCommands.ImportProject}}"/>-->
            <MenuItem Header="Save" Command="{Binding Source={x:Static ns:ApplicationCommands.SaveProject}}"/>
            <MenuItem Header="Save as" Command="{Binding Source={x:Static ns:ApplicationCommands.SaveAsProject}}"/>
            <ns:RecentFileList x:Name="RecentFileList"/>
            <MenuItem Header="Exit" Command="{Binding Source={x:Static ns:ApplicationCommands.Exit}}"/>
        </MenuItem><!--File-->

wpf datagrid menu contextmenu menuitem
1个回答
0
投票

我也遇到同样的问题,请问你解决了吗?

© www.soinside.com 2019 - 2024. All rights reserved.