This question is locked. New answers and comments are not allowed.
I have an editable GridView and it works fine adding new rows until I reach the bottom (about 15 rows).
Then adding a new row takes over four seconds.
I have used JustTrace to see what is going on and its all about redrawing the different part of the grid.
I have tried with row virtualization on or off with no difference.
Here is my grid:
Check screenshots for JustTrace result.
I'm using the Silverlight 4 version, is there any known problems in that version.
I'm not able to upgrade to the latest version at the moment.
Regards,
HÃ¥kan
Then adding a new row takes over four seconds.
I have used JustTrace to see what is going on and its all about redrawing the different part of the grid.
I have tried with row virtualization on or off with no difference.
Here is my grid:
<soe:SOEGridView x:Name="DataGrid" Grid.Row="3" Style="{StaticResource EditableSOEGridView}" ItemsSource="{Binding Shifts, Source={StaticResource ViewModel}}" SelectedItem="{Binding CurrentShift, Source={StaticResource ViewModel}, Mode=TwoWay}" RowIndicatorVisibility="Collapsed" IsFilteringAllowed="False" ShowColumnFooters="False" IsReadOnly="{Binding EditPermission, Converter={StaticResource BooleanInvertConverter}}" EnableColumnVirtualization="True" EnableRowVirtualization="True" Margin="0,-1,0,0" RowLoaded="DataGrid_RowLoaded" AddingNewDataItem="DataGrid_AddingNewDataItem" Deleted="DataGrid_Deleted" CurrentCellChanged="DataGrid_CurrentCellChanged" PreparingCellForEdit="DataGrid_PreparingCellForEdit" CellEditEnded="DataGrid_CellEditEnded" RowEditEnded="DataGrid_RowEditEnded"> <telerik:RadGridView.Resources> <local:IsBreakStyleSelector x:Key="IsBreakStyleSelector" /> <Style TargetType="TextBlock"> <!-- Remove implicit style on TextBlock --> </Style> <Style TargetType="CheckBox" BasedOn="{StaticResource GridView_CheckBox}"> </Style> <Style TargetType="Border" x:Key="StatusBorderStyle"> <Setter Property="BorderBrush" Value="{StaticResource ContentBorderBrush}" /> <Setter Property="BorderThickness" Value="1,0,1,0" /> <Setter Property="Height" Value="25" /> <Setter Property="Margin" Value="-6,-1,-3,0" /> </Style> <Style TargetType="telerik:RadComboBox"> <Setter Property="Height" Value="22" /> <Setter Property="Width" Value="148" /> <Setter Property="IsEditable" Value="True" /> <Setter Property="TextSearchMode" Value="Contains" /> <Setter Property="IsReadOnly" Value="False" /> <Setter Property="OpenDropDownOnFocus" Value="True" /> </Style> </telerik:RadGridView.Resources> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn Header="" Width="25" IsReadOnly="True" TabStopMode="Skip" IsResizable="False"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding IsModified, Converter={StaticResource BooleanToAsteriskConverter}}" Foreground="{StaticResource SelectedBrush}" VerticalAlignment="Center" HorizontalAlignment="Center" Width="10" /> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> </telerik:GridViewDataColumn> <telerik:GridViewDataColumn Header="" DataMemberBinding="{Binding ShiftUserStatus}" MinWidth="10" Width="10" IsReadOnly="True" TabStopMode="Skip" IsResizable="False"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <Border Style="{StaticResource StatusBorderStyle}" Background="{Binding ShiftUserStatus, Converter={StaticResource ShiftUserStatusBackgroundColorConverter}}" /> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> </telerik:GridViewDataColumn> <telerik:GridViewCheckBoxColumn Header="Rast" DataMemberBinding="{Binding IsBreak}" Width="40" EditorStyle="{StaticResource DefaultStandardCheckBox}" CellStyleSelector="{StaticResource IsBreakStyleSelector}" IsResizable="False" AutoSelectOnEdit="True" TabStopMode="Stop" EditTriggers="CellClick"> <telerik:GridViewCheckBoxColumn.CellTemplate> <DataTemplate> <CheckBox IsChecked="{Binding IsBreak, Mode=TwoWay}" /> </DataTemplate> </telerik:GridViewCheckBoxColumn.CellTemplate> </telerik:GridViewCheckBoxColumn> <telerik:GridViewDataColumn Header="Vecka" DataMemberBinding="{Binding DayNumber}" Width="45" IsReadOnly="True" TabStopMode="Skip" IsResizable="False" TextAlignment="Right"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding DayNumber, Converter={StaticResource DayNumberToWeekNumberConverter}}" TextAlignment="Right" Margin="0,0,4,0" /> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> <telerik:GridViewDataColumn.CellEditTemplate> <DataTemplate> <soe:SOETextBox Text="{Binding DayNumber, Mode=TwoWay, Converter={StaticResource DayNumberToWeekNumberConverter}}" Width="43" IsNumeric="True" /> </DataTemplate> </telerik:GridViewDataColumn.CellEditTemplate> </telerik:GridViewDataColumn> <telerik:GridViewDataColumn Header="Dag" DataMemberBinding="{Binding DayName}" Width="70" IsReadOnly="True" TabStopMode="Skip" IsResizable="False"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding DayName, Converter={StaticResource DayOfWeekToDayNameConverter}, ConverterParameter='camelcase'}" /> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> <telerik:GridViewDataColumn.CellEditTemplate> <DataTemplate> <telerik:RadComboBox ItemsSource="{Binding WeekDays, Source={StaticResource ViewModel}}" SelectedValue="{Binding DayName, Mode=TwoWay}" SelectedValuePath="Field1" DisplayMemberPath="Field2" OpenDropDownOnFocus="False" Width="68"> <telerik:RadComboBox.ItemsPanel> <ItemsPanelTemplate> <VirtualizingStackPanel HorizontalAlignment="Stretch" /> </ItemsPanelTemplate> </telerik:RadComboBox.ItemsPanel> </telerik:RadComboBox> </DataTemplate> </telerik:GridViewDataColumn.CellEditTemplate> </telerik:GridViewDataColumn> <telerik:GridViewDataColumn Header="Datum" DataMemberBinding="{Binding Start}" Width="102" IsResizable="False" IsVisible="{Binding ShowDateInGridView, Source={StaticResource ViewModel}}"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding Start, Converter={StaticResource DateTimeConverter}}" TextAlignment="Right" Margin="0,0,4,0" /> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> <telerik:GridViewDataColumn.CellEditTemplate> <DataTemplate> <soe:SOEDatePicker x:Name="RowDate" SelectedDate="{Binding Start, Mode=TwoWay}" Width="100" TextAlignment="Right" Margin="0" SelectionChanged="RowDate_SelectionChanged" /> </DataTemplate> </telerik:GridViewDataColumn.CellEditTemplate> </telerik:GridViewDataColumn> <telerik:GridViewDataColumn Header="Från" DataMemberBinding="{Binding ActualStart}" Width="45" IsResizable="False"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding ActualStart, Converter={StaticResource TimeConverter}}" TextAlignment="Right" Margin="0,0,4,0"> <ToolTipService.ToolTip> <ToolTip Content="{Binding ActualStart, Converter={StaticResource DateTimeConverter}, ConverterParameter='short_short'}" /> </ToolTipService.ToolTip> </TextBlock> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> <telerik:GridViewDataColumn.CellEditTemplate> <DataTemplate> <soe:SOETextBox Text="{Binding ActualStart, Mode=TwoWay, Converter={StaticResource TimeConverter}}" IsTime="True" Width="43" TextAlignment="Right" /> </DataTemplate> </telerik:GridViewDataColumn.CellEditTemplate> </telerik:GridViewDataColumn> <telerik:GridViewDataColumn Header="Till" DataMemberBinding="{Binding ActualEnd}" Width="45" IsResizable="False"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding ActualEnd, Converter={StaticResource TimeConverter}}" TextAlignment="Right" Margin="0,0,4,0"> <ToolTipService.ToolTip> <ToolTip Content="{Binding ActualEnd, Converter={StaticResource DateTimeConverter}, ConverterParameter='short_short'}" /> </ToolTipService.ToolTip> </TextBlock> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> <telerik:GridViewDataColumn.CellEditTemplate> <DataTemplate> <soe:SOETextBox Text="{Binding ActualEnd, Mode=TwoWay, Converter={StaticResource TimeConverter}}" IsTime="True" Width="43" TextAlignment="Right" /> </DataTemplate> </telerik:GridViewDataColumn.CellEditTemplate> </telerik:GridViewDataColumn> <telerik:GridViewDataColumn Header="Längd" Width="45" IsResizable="False" IsReadOnly="True" TabStopMode="Skip"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding Path=., Converter={StaticResource TimeScheduleShiftLengthConverter}}" TextAlignment="Right" Margin="0,0,4,0" /> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> </telerik:GridViewDataColumn> <telerik:GridViewComboBoxColumn Header="Pass-/rasttyp" IsComboBoxEditable="True" Width="150"> <telerik:GridViewComboBoxColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding ShiftTypeName}"> <ToolTipService.ToolTip> <ToolTip Content="{Binding ShiftTypeName}" /> </ToolTipService.ToolTip> </TextBlock> </DataTemplate> </telerik:GridViewComboBoxColumn.CellTemplate> <telerik:GridViewComboBoxColumn.CellEditTemplate> <DataTemplate> <Grid> <telerik:RadComboBox x:Name="RowShiftType" SelectedValue="{Binding ShiftTypeId, Mode=TwoWay}" ItemsSource="{Binding Path=ShiftTypes, Source={StaticResource ViewModel}}" SelectedValuePath="ShiftTypeId" DisplayMemberPath="Name" TextSearchMode="StartsWith" Visibility="{Binding IsBreak, Converter={StaticResource VisibilityConverter}, ConverterParameter='inverse'}"> <telerik:RadComboBox.ItemsPanel> <ItemsPanelTemplate> <VirtualizingStackPanel HorizontalAlignment="Stretch" /> </ItemsPanelTemplate> </telerik:RadComboBox.ItemsPanel> </telerik:RadComboBox> <telerik:RadComboBox x:Name="RowBreakTimeCode" SelectedValue="{Binding Break1Id, Mode=TwoWay}" ItemsSource="{Binding Path=BreakTimeCodes, Source={StaticResource ViewModel}}" SelectedValuePath="TimeCodeId" DisplayMemberPath="Name" TextSearchMode="StartsWith" Visibility="{Binding IsBreak, Converter={StaticResource VisibilityConverter}}" OpenDropDownOnFocus="False"> <telerik:RadComboBox.ItemsPanel> <ItemsPanelTemplate> <VirtualizingStackPanel HorizontalAlignment="Stretch" /> </ItemsPanelTemplate> </telerik:RadComboBox.ItemsPanel> </telerik:RadComboBox> </Grid> </DataTemplate> </telerik:GridViewComboBoxColumn.CellEditTemplate> </telerik:GridViewComboBoxColumn> <telerik:GridViewComboBoxColumn Header="Schematyp" IsComboBoxEditable="True" DataMemberBinding="{Binding TimeScheduleTypeId}" ItemsSource="{Binding Path=TimeScheduleTypes, Source={StaticResource ViewModel}}" SelectedValueMemberPath="TimeScheduleTypeId" DisplayMemberPath="Name" Width="150" IsVisible="{Binding ShowTimeScheduleType, Source={StaticResource ViewModel}}"> <telerik:GridViewComboBoxColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding TimeScheduleTypeName}" /> </DataTemplate> </telerik:GridViewComboBoxColumn.CellTemplate> <telerik:GridViewComboBoxColumn.CellEditTemplate> <DataTemplate> <telerik:RadComboBox SelectedValue="{Binding TimeScheduleTypeId, Mode=TwoWay}" ItemsSource="{Binding Path=TimeScheduleTypes, Source={StaticResource ViewModel}}" SelectedValuePath="TimeScheduleTypeId" DisplayMemberPath="Name" SelectionChanged="RowTimeScheduleType_SelectionChanged"> <telerik:RadComboBox.ItemsPanel> <ItemsPanelTemplate> <VirtualizingStackPanel HorizontalAlignment="Stretch" /> </ItemsPanelTemplate> </telerik:RadComboBox.ItemsPanel> </telerik:RadComboBox> </DataTemplate> </telerik:GridViewComboBoxColumn.CellEditTemplate> </telerik:GridViewComboBoxColumn> <telerik:GridViewComboBoxColumn Header="Anställd" IsComboBoxEditable="True" DataMemberBinding="{Binding EmployeeId}" ItemsSource="{Binding Path=Employees, Source={StaticResource ViewModel}}" SelectedValueMemberPath="EmployeeId" DisplayMemberPath="Name" Width="150" IsVisible="{Binding ShowEmployeeInGridView, Source={StaticResource ViewModel}}"> <telerik:GridViewComboBoxColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding EmployeeName}" /> </DataTemplate> </telerik:GridViewComboBoxColumn.CellTemplate> <telerik:GridViewComboBoxColumn.CellEditTemplate> <DataTemplate> <telerik:RadComboBox SelectedValue="{Binding EmployeeId, Mode=TwoWay}" ItemsSource="{Binding Path=Employees, Source={StaticResource ViewModel}}" SelectedValuePath="EmployeeId" DisplayMemberPath="Name" SelectionChanged="RowEmployee_SelectionChanged"> <telerik:RadComboBox.ItemsPanel> <ItemsPanelTemplate> <VirtualizingStackPanel HorizontalAlignment="Stretch" /> </ItemsPanelTemplate> </telerik:RadComboBox.ItemsPanel> </telerik:RadComboBox> </DataTemplate> </telerik:GridViewComboBoxColumn.CellEditTemplate> </telerik:GridViewComboBoxColumn> <telerik:GridViewDataColumn Header="Beskrivning" DataMemberBinding="{Binding Description}" Width="*"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding Description}" /> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> <telerik:GridViewDataColumn.CellEditTemplate> <DataTemplate> <soe:SOETextBox Text="{Binding Description, Mode=TwoWay}" /> </DataTemplate> </telerik:GridViewDataColumn.CellEditTemplate> </telerik:GridViewDataColumn> <telerik:GridViewDataColumn Header="Orsak" DataMemberBinding="{Binding TimeDeviationCauseName}" Width="*"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding TimeDeviationCauseName}" /> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> </telerik:GridViewDataColumn> <telerik:GridViewCheckBoxColumn Header="Prel" DataMemberBinding="{Binding IsPreliminary}" Width="40" EditorStyle="{StaticResource DefaultStandardCheckBox}" IsResizable="False" TabStopMode="Skip" AutoSelectOnEdit="True" EditTriggers="CellClick" /> <telerik:GridViewColumn Width="26" IsReadOnly="True" TabStopMode="Skip" IsResizable="False" IsVisible="{Binding ShowLinkButtonColumn, Source={StaticResource ViewModel}}"> <telerik:GridViewColumn.CellTemplate> <DataTemplate> <Grid> <Border Opacity="0.4" /> <soe:RadImageButton Style="{StaticResource GridViewRowButton}" ImageSource="/Soe.Silverlight;Component/img/16/link.png" ImageMargin="4,1,0,0" Visibility="{Binding IsBreak, Converter={StaticResource VisibilityConverter}, ConverterParameter='inverse'}" Click="ButtonUnlink_Click" /> </Grid> </DataTemplate> </telerik:GridViewColumn.CellTemplate> </telerik:GridViewColumn> <telerik:GridViewColumn Width="26" IsReadOnly="True" TabStopMode="Skip" IsResizable="False" IsVisible="{Binding IsReadOnly, ElementName=DataGrid, Converter={StaticResource BooleanInvertConverter}}"> <telerik:GridViewColumn.CellTemplate> <DataTemplate> <soe:SOEHyperlinkButton Style="{StaticResource Hyperlink_DeleteRowButton}" ImageMargin="0,0,0,0" Click="ButtonDeleteRow_Click" /> </DataTemplate> </telerik:GridViewColumn.CellTemplate> </telerik:GridViewColumn> </telerik:RadGridView.Columns> <telerik:RadGridView.SortDescriptors> <telerik:SortDescriptor Member="SortOrder" SortDirection="Ascending" /> </telerik:RadGridView.SortDescriptors> </soe:SOEGridView>Check screenshots for JustTrace result.
I'm using the Silverlight 4 version, is there any known problems in that version.
I'm not able to upgrade to the latest version at the moment.
Regards,
HÃ¥kan