Hello!
Do the standard WPF virtualizing properties have any affect at all on the XamDataTree?
VirtualizingStackPanel.IsVirtualizing="False" // True, FalseVirtualizingStackPanel.VirtualizationMode="Standard" // Standard, Recycling?
Are there any IG-specific properties that affect the XamDataTree virtualizing behavior?If so, where are these documented?
Thanks,Mark
The reason I've posted this question is the following:
I built the XamDataTree into our application, replacing the Microsoft TreeView. In our usage of the Tree control, several things are important: 1) Ability to load large data-sets (possibly several hundred thousand lines) and to do this quickly 2) Ability to use various scrolling methods (pull down on the scroll-bar, select an item and use key-down/ up) to browse the data quickly
What we are finding is the following:Point 1) is seemingly happening quite quickly.Point 2) has problems:
When we load a new data-set, with about 2500 lines, the scroll-bar height is very large:
It leads the user to believe that there are only a few more lines to see!Then, when I pull down down on the scroll bar, trying to reach the last line, the elements are scrolled into view but the user does not ever get a visual cue that she is able to reach the end; she has to continually pull down on the scroll-bar, over and over again, to eventually reach the end:
Only after pulling down on the scroll bar the first time does the height of the scroll bar does adjust itself!
In summary, the problems are:1) Initially, the scroll-bar height does not at all reflect the number of lines in the data-set2) The user must continually pull down on the scroll bar to eventually reach the end, the scrolling is definitely not "smooth". You have to scroll down, let go of the scroll-bar, get it again, scroll down again, and this many times to reach the end of the data-set which only has 2500 lines.
Here is my XAML, nothing special:
<Grid Grid.Row="2"> <View:RsCustomIgTreeView x:Name="TreeViewTree" Style="{StaticResource XamDataTreeStyle}" ItemsSource="{Binding RootViewModel}" ActiveNodeIndicatorStyle="{StaticResource ActiveNodeIndicatorStyle}" NodeStyle="{StaticResource NodeStyle}" SelectedItem="{Binding SelectedViewModelElement, Mode=TwoWay}" VirtualizingStackPanel.IsVirtualizing="True" // ? has any affect ? VirtualizingStackPanel.VirtualizationMode="Recycling" // ? has any affect ? > <ig:XamDataTree.GlobalNodeLayouts> <ig:NodeLayout Key="Node" TargetTypeName="DecodedElementViewModel" DisplayMemberPath="Name" IsExpandedMemberPath="IsExpanded"> <ig:NodeLayout.ExpandedIconTemplate> <DataTemplate> <Image Source="{Binding Data.Image}" /> </DataTemplate> </ig:NodeLayout.ExpandedIconTemplate> <ig:NodeLayout.CollapsedIconTemplate> <DataTemplate> <Image Source="{Binding Data.Image}" /> </DataTemplate> </ig:NodeLayout.CollapsedIconTemplate> </ig:NodeLayout> </ig:XamDataTree.GlobalNodeLayouts> </View:RsCustomIgTreeView> </Grid>
Hello Mark,
Thank you for your post. I have been looking into it and I wasn’t able to reproduce the behavior you described about the Scrollbar and since the images you attached are not visible I cannot be completely sure how it looks on your side. If you could send an isolated sample project, where the issue is reproduced, so I can investigate it further for you.
Also after some research ScrollTip has been determine as a new Product Idea. I have sent your Product Idea directly to our product management team. Our product team chooses new Product Ideas for development based on popular feedback from our customer base. Infragistics continues to monitor application development for all of our products, so as trends appear in requested ideas, we can plan accordingly.
We value your input, and our philosophy is to enhance our toolset based on customer feedback. If your idea is chosen for development, you will be notified at that time. Your reference number for this Product Idea is PI13010129
If you would like to follow up on your Product Idea at a later point, you may contact Developer Support management via email. Please include the reference number of your Product Idea in the subject and body of your email message. You can reach Developer Support management through the following email address: dsmanager@infragistics.com
Sorry, I did cut/paste on the images, that doesn't seem to work (even though I could see them fine).Since I can seemingly upload only one file per post, I'll upload the second image.The first image showed the scrollbar taking up 3/4 of the vertical height of the Tree-View window, even though the number of elements is the same as in the second image, and, known from the start, i.e. as soon as I bind my VM! The second image was taken after I pulled down on the scrollbar the first time, after which it scaled its height more-or-less correctly.Something is wrong! I did write a sample program using XamDataTree, and pumped 2,000,000 elements into it and the behavior I'm describing was not seen: the height of the scrollbar started out, and remained, proportional to the number of elements.I'd be somewhat difficult to create an isolated sample project as I've integrated the XamDataTree into our working application. However, the effect I'm describing DOES EXIST!
Since this is not a known issue, I cannot be completely sure what can cause such behavior like yours, so if you could isolate this and send me a sample project I will be able to investigate this further for you.
Looking forward for your reply.
Hello Stefan,If I do not get further I shall do that.
But again: Are there any IG properties which influence the virtualizing behavior of XamDataTree or other controls?Also: do the standard Microsoft properties have any effect at all?
<Grid Grid.Row="2"> <View:RsCustomIgTreeView x:Name="TreeViewTree" Style="{StaticResource XamDataTreeStyle}" ItemsSource="{Binding RootViewModel}" ActiveNodeIndicatorStyle="{StaticResource ActiveNodeIndicatorStyle}" NodeStyle="{StaticResource NodeStyle}" SelectedItem="{Binding SelectedViewModelElement, Mode=TwoWay}" VirtualizingStackPanel.IsVirtualizing="True" // ? has any affect ? VirtualizingStackPanel.VirtualizationMode="Recycling" // ? has any affect ? >
I can say that the virtualization in the XamDataTree is made by using this StackPanel and by default the IsVirtualizing Property is set to True. You can read more about this element and how to implement UI virtualization here:
http://msdn.microsoft.com/en-us/library/system.windows.controls.virtualizingstackpanel.aspx
and
http://social.msdn.microsoft.com/forums/en-US/wpf/thread/0e2cb28f-8b61-4eb4-8cf1-5626b44e6100
Hope this helps you.
Thanks. But you do not seem to want to address my specific question, which was:"But again: Are there any INFRAGISTICS properties which influence the virtualizing behavior of XamDataTree or other controls?Cheers,Mark
Thank you Stefan!Kindest Regards,Mark
I appologize I didn't answer your question in my previous post. By deafult the UI virtualization of all our controls is turned on. The XamDataTree doesn't have an exposed property and the virtualization tehre is turned on all the time. The XamDataGrid has RecordContainerGenerationMode Property, FieldSettings' AllowCellVirtualization Property, CellContainerGenerationMode Property, which determine whether to have or not to have virtualization. Also here you can read how to control the virtualization in XamGrid:
http://help.infragistics.com/Help/NetAdvantage/Silverlight/2012.2/CLR4.0/html/xamGrid_Virtualization.html