Thats my XAML code for the datagrid:
<DataGrid AutoGenerateColumns="false" CanUserAddRows="False" Grid.Row="2" VirtualizingStackPanel.VirtualizationMode="Standard" IsSynchronizedWithCurrentItem="True" Name="dgStartlists">
<DataGrid.Resources>
<Style TargetType="DataGridColumnHeader">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Padding" Value="2"/>
<Setter Property="BorderThickness" Value="0.5"/>
<Setter Property="BorderBrush" Value="Black"/>
<Setter Property="FontSize" Value="14"/>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Header="Competitor" Width="120" Binding="{Binding Competitor}" CanUserSort="False" IsReadOnly="True"/>
<DataGridTextColumn Header="Race" Width="110" Binding="{Binding Race}" IsReadOnly="True" CanUserSort="False"/>
<DataGridTextColumn Header="Run" Binding="{Binding Run}" Width="30" FontSize="12" />
<DataGridTextColumn Header="Pos" Binding="{Binding Startposition}" Width="30" FontSize="12"/>
<DataGridTextColumn Header="Bib" Binding="{Binding Bib}" Width="30" FontSize="12"/>
<DataGridTextColumn Header="Heat" Binding="{Binding Heat}" Width="35" FontSize="12" />
<DataGridCheckBoxColumn Header="Pending" Binding="{Binding Pending}" Width="60" />
<DataGridComboBoxColumn Header="State" Width="50" ItemsSource="{Binding Source={StaticResource ResourceKey=StateEnum}}" SelectedItemBinding="{Binding State}"/>
<DataGridTextColumn Header="Class" Binding="{Binding Classname}" Width="80" FontSize="12" />
<DataGridTextColumn Header="Start Time" Binding="{Binding Starttime, StringFormat=H:mm:ss}" Width="80" FontSize="12" />
</DataGrid.Columns>
</DataGrid>
Thats my C# Code:
private ListCollectionView _cventries;
public dcStartlists()
{
InitializeComponent();
}
#region Usercontrol load/unload
private void dcStartlists_Loaded(object sender, RoutedEventArgs e)
{
if (System.ComponentModel.DesignerProperties.GetIsInDesignMode(this))
return;
_cventries = new ListCollectionView(App.Competition.Entries);
dgStartlists.ItemsSource = _cventries;
}
private void SetFilter()
{
_cventries.Filter = obj => ((Entry)obj).Run == 1;
}
App.Competition.Entries is an ObservableCollection with about 500-600 items. I am using the ListCollectionView because i need to filter my data.
When the control loads first time my GUI freezes for about 1-2 sec, and when I am calling the SetFilter Function the GUI also freezes. I think its no virtualisationproblem or something like that, maybe i do something wrong by setting the itemsource?