MenuItem导致应用程序变慢

时间:2012-02-25 17:19:15

标签: wpf datagrid menu contextmenu menuitem

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

通常,使用datagrid非常快。每次我更改datagrid集合时,它都会快速加载。

我的问题是当我显示一些menuItem(在contextmenu或Menu中)时,它会导致应用程序笨拙并且行动缓慢。我的数据网格很慢。

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

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

这是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-->

    

0 个答案:

没有答案