У меня есть DataGrid, который отображает мои данные (коллекция содержит более одного типа данных,
где для каждого типа я написал DataTemplate). По сути, мой DataGrid действует как свойство Grid.
Обычно работа с сеткой данных выполняется довольно быстро. Каждый раз, когда я меняю коллекцию данных, она быстро загружается.
Моя проблема в том, что когда я отображаю какой-либо элемент 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-->