0

I have implemented below mentioned code in WPF in that I have implemented virtualization of lazy loading but it's not work when my inner collection have a 1000 of record then it will take much time to load on screen.

<ListBox x:Name="Mappingcontrol" Grid.Row="1"
                     DataContext="{Binding ElementName=Grids,Path=DataContext}"
                     VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
                     ItemsSource="{Binding Path=MultiMappingCollectionList, Mode=TwoWay}"
                     VirtualizingStackPanel.IsVirtualizing="True" 
                     VirtualizingStackPanel.VirtualizationMode="Recycling"
                     BorderThickness="0" BorderBrush="Transparent"
                     Background="Transparent"
                     HorizontalContentAlignment="Stretch"
                     VerticalContentAlignment="Stretch"
                     ItemContainerStyle="{StaticResource TransparentListBoxStyle}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Border Padding="0,10,0,10" BorderThickness="0,0,0,1"
                                BorderBrush="{StaticResource Gray5SolidBrush}">
                            <Grid x:Name="Gridmain" Margin="4,0,0,0">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition x:Name="default" Width="0.5*" SharedSizeGroup="default" />
                                    <ColumnDefinition x:Name="atrioValue" Width="1*"
                                                      SharedSizeGroup="atrioValue" />
                                    <ColumnDefinition x:Name="externalValue" Width="2*"
                                                      SharedSizeGroup="externalValue" />
                                </Grid.ColumnDefinitions>

                                <ToggleButton VerticalAlignment="Top"
                                              HorizontalAlignment="Left"
                                              Style="{DynamicResource ToggleButtonStyle}"
                                              Margin="30,12,10,10" IsTabStop="False" Width="25"
                                              Height="25"
                                              IsChecked="{Binding IsDefault, Mode=TwoWay}">

                                <TextBlock Grid.Column="1" Margin="0,15,10,10" HorizontalAlignment="Left"
                                           VerticalAlignment="Top"
                                           Text="{Binding Path=Description}"
                                           Style="{StaticResource ContentDataText}"
                                           Name="txtDescription" />

                                <ListBox x:Name="GroupListBox" Grid.Column="2"
                                         ItemsSource="{Binding Path=MultiMapping,Mode=TwoWay}"
                                         HorizontalContentAlignment="Stretch"
                                         BorderThickness="0"
                                         BorderBrush="Transparent"
                                         Background="Transparent"
                                         VerticalContentAlignment="Stretch"
                                         VirtualizingStackPanel.IsVirtualizing="True"
                                         VirtualizingStackPanel.VirtualizationMode="Recycling"
                                         VirtualizingStackPanel.CacheLength="2,3"
                                         VirtualizingStackPanel.CacheLengthUnit="Page"
                                         ItemContainerStyle="{StaticResource TransparentListBoxStyle}">

                                    <ListBox.ItemTemplate>
                                        <DataTemplate>
                                            <StackPanel Orientation="Horizontal" CanVerticallyScroll="True" Height="200">
                                                <telerik:RadWatermarkTextBox x:Name="ExternalValueTextBox"
                                                                             HorizontalAlignment="Left"
                                                                             TabIndex="100"
                                                                             KeyboardNavigation.TabIndex="100"
                                                                             IsTabStop="True"
                                                                             Width="250"
                                                                             MaxLength="35"
                                                                             TextWrapping="Wrap"
                                                                             Validation.ErrorTemplate="{DynamicResource CustomErrorTemplate}"
                                                                             Text="{Binding Path=ExternalValue, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
                                                                             PreviewTextInput="ExternalValueTextBox_OnPreviewTextInput"
                                                                             Style="{DynamicResource RadWatermarkTextBoxDefault}"
                                                                             Visibility="{Binding Path=ExternalValue,Converter={StaticResource StarVisibilityConverter}}"
                                                                             Margin="0,5,0,0">

                                                </telerik:RadWatermarkTextBox>

                                                <Button x:Name="DeleteButton" Background="Transparent"
                                                        BorderThickness="0"
                                                        BorderBrush="Transparent"
                                                        CommandParameter="{Binding}"
                                                        Command="{Binding DataContext.RemoveGrouplistCommand,  RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"
                                                        HorizontalAlignment="Right"
                                                        VerticalAlignment="Center"
                                                        Visibility="{Binding Path=RemoveButtonVisibility,Converter={StaticResource BooleanHiddenVisibleConverter},Mode=TwoWay}"
                                                        Margin="15,5,15,0"
                                                        Style="{DynamicResource ButtonInvisibleNoColorEffects}">
                                                    <Button.Content>
                                                        <Rectangle Style="{StaticResource SmallCloseIcon}" />
                                                    </Button.Content>
                                                </Button>

                                                <Grid x:Name="AddGrid"
                                                      Visibility="{Binding Path=AddbuttonVisibility,Converter={StaticResource BooleanVisibilityConverter}}">

                                                    <controls:ActionImageButton x:Name="AddButton"
                                                                                Content="Add Another"
                                                                                DataContext="{Binding ElementName=Root,Path=DataContext}"
                                                                                CommandParameter="{Binding ElementName=txtDescription,Path=Text}"
                                                                                Command="{Binding AddGrouplistCommand}"
                                                                                HorizontalAlignment="Right"
                                                                                VerticalAlignment="Center"
                                                                                IsEnabled="{Binding ElementName=ExternalValueTextBox,Path=Text,Converter={StaticResource StarVisibilityConverter},ConverterParameter=CanAdd}"
                                                                                Margin="5,5,30,5"
                                                                                Style="{StaticResource ActionImageButtonMedium}" />
                                                </Grid>
                                            </StackPanel>
                                        </DataTemplate>
                                    </ListBox.ItemTemplate>
                                </ListBox>

                            </Grid>
                        </Border>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

It would be great help if anyone can light on me what's I am doing wrong in it Thanks in advance.

Dhaval Patel
  • 7,471
  • 6
  • 37
  • 70
  • You might try giving the inner ListBox a MaxHeight. If unconstrained in size, the measurement pass will try to instantiate all items in order to determine the full expanded size of all the ListBox items, which then determines what the parent uses for its item container size. Since the measurement requires instantiating visuals for all of its items (to measure them), virtualization is effectively bypassed. – Dan Bryant Jul 20 '15 at 17:11
  • @DanBryant:Thanks for you reply but I will give maxheight then scroll bar will come already I have scroll bar for my main collection and I don't want two scroll bar is there any work around of it ? – Dhaval Patel Jul 20 '15 at 17:40
  • I don't think it will be possible using the standard virtualization support. – Dan Bryant Jul 20 '15 at 18:28

0 Answers0