我有一个显示我的数据的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-->