Specifications:
Telerik libraries - RadControls for WPF Q2 3013 SP1
My Project: WPF desktop application in.Net 4.0 C#.
The problem:
I'm adding rows to the RagGridView through an ItemsSource binding to an observable collection. Whenever an item is added to the collection, the RagGridView control reloads all previously added rows along with the new row. It also re-instantiates user controls from the exsting rows. For example, If I have 20 rows, and one gets added from the collection, the entire 20 rows are reloaded before the new one gets loaded. This makes the GUI get slower and slower as rows are added.
What's worse: When items are added that will be displayed out of the scrolling view, the RagGridView reloads all the old rows and then it eventually (after about 15 items are added that are not visible) goes into an infinite loop reloading all the rows that are not visible. This locks up the GUI and fills up system memory since it re-instantiates user controls. This infinite loop happens in my situation after about 45 to 50 rows total are in the grid control.
Here's the XAML definition of the control:
Here is the stack trace from my RowLoaded callback method while the RadGridControl is caught in the infinite loop:
And here's the stack trace when the control is instantiating my CircularProgressBar user control in the infinite loop:
I have tried turning data virturalization on and off with no change the results. I have used the RadGridConrol with much success in the past, but I'm stumped here. I hope I'm just missing something stupid.
Any suggestions? Thanks.
Telerik libraries - RadControls for WPF Q2 3013 SP1
My Project: WPF desktop application in.Net 4.0 C#.
The problem:
I'm adding rows to the RagGridView through an ItemsSource binding to an observable collection. Whenever an item is added to the collection, the RagGridView control reloads all previously added rows along with the new row. It also re-instantiates user controls from the exsting rows. For example, If I have 20 rows, and one gets added from the collection, the entire 20 rows are reloaded before the new one gets loaded. This makes the GUI get slower and slower as rows are added.
What's worse: When items are added that will be displayed out of the scrolling view, the RagGridView reloads all the old rows and then it eventually (after about 15 items are added that are not visible) goes into an infinite loop reloading all the rows that are not visible. This locks up the GUI and fills up system memory since it re-instantiates user controls. This infinite loop happens in my situation after about 45 to 50 rows total are in the grid control.
Here's the XAML definition of the control:
<telerik:RadGridView Name="VirtualDomainConfigurationsGrid" Grid.Row="0" ItemsSource="{Binding VirtualDomains}" Foreground="White" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" AutoGenerateColumns="False" RowIndicatorVisibility="Collapsed" RowDetailsVisibilityMode="Collapsed" ShowGroupPanel="False" IsFilteringAllowed="False" CanUserFreezeColumns="False" CanUserReorderColumns="False" FrozenColumnsSplitterVisibility="Collapsed" CanUserSortColumns="True" SelectionUnit="FullRow" SelectionMode="Extended" BorderBrush="Transparent" Background="Transparent" SelectionChanged="VirtualDomainConfigurationsGrid_SelectionChanged" VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Standard" IsReadOnly="True" PreviewMouseRightButtonDown="VirtualDomainConfigurationsGrid_PreviewMouseRightButtonDown" PreviewMouseLeftButtonDown="VirtualDomainConfigurationsGrid_PreviewMouseLeftButtonDown" GridLinesVisibility="None" AlternationCount="2" AlternateRowBackground="{StaticResource DarkerBackgroundColor}" RowLoaded="VirtualDomainConfigurationsGrid_RowLoaded" > <telerik:RadGridView.InputBindings> <KeyBinding Command="{Binding Source={x:Static t:GenesisCommands.DeleteVantageVirtualDomain}}" Key="Delete" Gesture="Delete" /> </telerik:RadGridView.InputBindings> <telerik:RadGridView.Resources> <Style TargetType="telerik:GridViewRow"> <Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}"/> </Style> <converters:StringToStyleConverter x:Key="stringToStyleConverter" /> </telerik:RadGridView.Resources> <telerik:RadGridView.ContextMenu> <ContextMenu Name="VirtaulClusteContextMenu"> <MenuItem Name="NewVirtualDomainContextMenuItem" Header="New Virtual Domain" Command="{Binding Source={x:Static t:GenesisCommands.CreateNewVantageVirtualDomain}}" IsEnabled="{Binding Source={x:Static dm:CloudServiceProviderAccountsDataModel.Instance}, Path=HasDefaultAccount}" /> <MenuItem Name="DeleteVirtualDomainContextMenuItem" Header="Delete Virtual Domain" Command="{Binding Source={x:Static t:GenesisCommands.DeleteVantageVirtualDomain}}" /> <MenuItem Name="StartVirtualDomainContextMenuItem" Header="Start Virtual Domain" Command="{Binding Source={x:Static t:GenesisCommands.StartVantageVirtualDomain}}" /> <MenuItem Name="PauseVirtualDomainContextMenuItem" Header="Pause Virtual Domain" Command="{Binding Source={x:Static t:GenesisCommands.PauseVantageVirtualDomain}}" /> <MenuItem Name="StopVirtualDomainContextMenuItem" Header="Stop Virtual Domain" Command="{Binding Source={x:Static t:GenesisCommands.StopVantageVirtualDomain}}" /> </ContextMenu> </telerik:RadGridView.ContextMenu> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn Name="VirtualClusterNameGridViewDataColumn" Header="Name" Width="150" MinWidth="100" IsSortable="True" SortingState="None" > <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center" ToolTip="{Binding CurrentName}" > <Button Margin="1,0,2,0" Visibility="{Binding ProgressVisibilityInverted}"> <Button.Style> <MultiBinding Converter="{StaticResource stringToStyleConverter}"> <MultiBinding.Bindings> <Binding RelativeSource="{RelativeSource Self}"/> <Binding Path="StatusColorStyle"/> </MultiBinding.Bindings> </MultiBinding> </Button.Style> </Button> <Viewbox Width="13" Height="13" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="{Binding ProgressVisibility}"> <usercontrols:CircularProgressBar /> </Viewbox> <Label Foreground="White" Content="{Binding CurrentName}" Margin="4,0,0,0"/> </StackPanel> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> </telerik:GridViewDataColumn> <telerik:GridViewDataColumn Name="VirtualClusterStateGridViewDataColumn" Header="State" Width="150" MinWidth="100" IsSortable="True" SortingState="None" > <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <Label Content="{Binding DataModel.State}" ToolTip="{Binding DataModel.State}"> </Label> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> </telerik:GridViewDataColumn> <telerik:GridViewDataColumn Name="VirtualClusterMessageGridViewDataColumn" Header="Details" Width="330" MinWidth="200" IsSortable="True" SortingState="None" > <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center" ToolTip="{Binding DataModel.StatusMessage}" > <Label Foreground="White" Content="{Binding CurrentCommandName}" Margin="0,0,0,0" Visibility="{Binding ProgressVisibility}"/> <Label Foreground="White" Content=" (" Margin="2,0,0,0" Visibility="{Binding ProgressVisibility}"/> <Label Foreground="White" Content="{Binding DataModel.TransitionProgressPercentage, Converter={StaticResource percentageConverter}}" Margin="2,0,0,0" Visibility="{Binding ProgressVisibility}" /> <Label Foreground="White" Content="):" Margin="2,0,5,0" Visibility="{Binding ProgressVisibility}"/> <Label Foreground="White" Content="{Binding DataModel.StatusMessage}" /> </StackPanel> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> </telerik:GridViewDataColumn> </telerik:RadGridView.Columns> </telerik:RadGridView>Here is the stack trace from my RowLoaded callback method while the RadGridControl is caught in the infinite loop:
> VantageVirtualDomainManagement.exe!Telestream.Genesis.Client.Gui.MainWindow.VirtualDomainConfigurationsGrid_RowLoaded(object sender, Telerik.Windows.Controls.GridView.RowLoadedEventArgs e) Line 270 C# Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.GridViewDataControl.OnRowLoaded(Telerik.Windows.Controls.GridView.RowLoadedEventArgs e) Line 478 C# Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.GridViewDataControl.RaiseRowLoaded(Telerik.Windows.Controls.GridView.GridViewRowItem row) Line 7971 C# Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.GridViewRowItem.MeasureOverride(System.Windows.Size availableSize) Line 239 C# PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x313 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.NestedLayoutStrategy.MeasureChild(System.Windows.UIElement child, System.Windows.Size layoutSlotSize, int i) Line 1582 C# Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.NestedLayoutStrategy.MeasureOverride(System.Windows.Size constraint) Line 213 + 0x44 bytes C# Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.MeasureOverride(System.Windows.Size availableSize) Line 342 + 0x47 bytes C# PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x313 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes PresentationFramework.dll!MS.Internal.Helper.MeasureElementWithSingleChild(System.Windows.UIElement element, System.Windows.Size constraint) + 0x6a bytes PresentationFramework.dll!System.Windows.Controls.ScrollContentPresenter.MeasureOverride(System.Windows.Size constraint) + 0x19e bytes PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x313 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes PresentationFramework.dll!System.Windows.Controls.Grid.MeasureCell(int cell, bool forceInfinityV) + 0x1a8 bytes PresentationFramework.dll!System.Windows.Controls.Grid.MeasureCellsGroup(int cellsHead, System.Windows.Size referenceSize, bool ignoreDesiredSizeU, bool forceInfinityV, out bool hasDesiredSizeUChanged) + 0x169 bytes PresentationFramework.dll!System.Windows.Controls.Grid.MeasureCellsGroup(int cellsHead, System.Windows.Size referenceSize, bool ignoreDesiredSizeU, bool forceInfinityV) + 0x3a bytes PresentationFramework.dll!System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size constraint) + 0x440 bytes PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x313 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes PresentationFramework.dll!System.Windows.Controls.ScrollViewer.MeasureOverride(System.Windows.Size constraint) + 0x37c bytes Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.GridViewScrollViewer.MeasureOverride(System.Windows.Size availableSize) Line 199 + 0x2d bytes C# PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x313 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes PresentationFramework.dll!System.Windows.Controls.Grid.MeasureCell(int cell, bool forceInfinityV) + 0x1a8 bytes PresentationFramework.dll!System.Windows.Controls.Grid.MeasureCellsGroup(int cellsHead, System.Windows.Size referenceSize, bool ignoreDesiredSizeU, bool forceInfinityV, out bool hasDesiredSizeUChanged) + 0x169 bytes PresentationFramework.dll!System.Windows.Controls.Grid.MeasureCellsGroup(int cellsHead, System.Windows.Size referenceSize, bool ignoreDesiredSizeU, bool forceInfinityV) + 0x3a bytes PresentationFramework.dll!System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size constraint) + 0x440 bytes PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x313 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes PresentationFramework.dll!System.Windows.Controls.Border.MeasureOverride(System.Windows.Size constraint) + 0x2f3 bytes PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x313 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes PresentationFramework.dll!System.Windows.Controls.Control.MeasureOverride(System.Windows.Size constraint) + 0x6a bytes Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.GridViewDataControl.MeasureOverride(System.Windows.Size availableSize) Line 6677 + 0x3c bytes C# PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x313 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes PresentationFramework.dll!System.Windows.Controls.Grid.MeasureCell(int cell, bool forceInfinityV) + 0x1a8 bytes PresentationFramework.dll!System.Windows.Controls.Grid.MeasureCellsGroup(int cellsHead, System.Windows.Size referenceSize, bool ignoreDesiredSizeU, bool forceInfinityV, out bool hasDesiredSizeUChanged) + 0x169 bytes PresentationFramework.dll!System.Windows.Controls.Grid.MeasureCellsGroup(int cellsHead, System.Windows.Size referenceSize, bool ignoreDesiredSizeU, bool forceInfinityV) + 0x3a bytes PresentationFramework.dll!System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size constraint) + 0x440 bytes PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x313 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes PresentationFramework.dll!System.Windows.Controls.Grid.MeasureCell(int cell, bool forceInfinityV) + 0x1a8 bytes PresentationFramework.dll!System.Windows.Controls.Grid.MeasureCellsGroup(int cellsHead, System.Windows.Size referenceSize, bool ignoreDesiredSizeU, bool forceInfinityV, out bool hasDesiredSizeUChanged) + 0x169 bytes PresentationFramework.dll!System.Windows.Controls.Grid.MeasureCellsGroup(int cellsHead, System.Windows.Size referenceSize, bool ignoreDesiredSizeU, bool forceInfinityV) + 0x3a bytes PresentationFramework.dll!System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size constraint) + 0x6a9 bytes PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x313 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes PresentationFramework.dll!MS.Internal.Helper.MeasureElementWithSingleChild(System.Windows.UIElement element, System.Windows.Size constraint) + 0x6a bytes PresentationFramework.dll!System.Windows.Controls.ContentPresenter.MeasureOverride(System.Windows.Size constraint) + 0x26 bytes PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x313 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes PresentationFramework.dll!System.Windows.Documents.AdornerDecorator.MeasureOverride(System.Windows.Size constraint) + 0x98 bytes PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x313 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes PresentationFramework.dll!System.Windows.Controls.Border.MeasureOverride(System.Windows.Size constraint) + 0x2f3 bytes PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x313 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes PresentationFramework.dll!System.Windows.Window.MeasureOverrideHelper(System.Windows.Size constraint) + 0x1c0 bytes PresentationFramework.dll!System.Windows.Window.MeasureOverride(System.Windows.Size availableSize) + 0x171 bytes PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x760 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes PresentationCore.dll!System.Windows.ContextLayoutManager.UpdateLayout() + 0x569 bytes PresentationCore.dll!System.Windows.ContextLayoutManager.UpdateLayoutCallback(object arg) + 0x22 bytes PresentationCore.dll!System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks() + 0x96 bytes PresentationCore.dll!System.Windows.Media.MediaContext.RenderMessageHandlerCore(object resizedCompositionTarget) + 0xdf bytes PresentationCore.dll!System.Windows.Media.MediaContext.RenderMessageHandler(object resizedCompositionTarget) + 0x2f bytes WindowsBase.dll!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate callback, object args, int numArgs) + 0x5e bytes WindowsBase.dll!MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(object source, System.Delegate method, object args, int numArgs, System.Delegate catchHandler) + 0x47 bytes WindowsBase.dll!System.Windows.Threading.DispatcherOperation.InvokeImpl() + 0x281 bytes mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) + 0x285 bytes mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) + 0x9 bytes mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x57 bytes WindowsBase.dll!System.Windows.Threading.DispatcherOperation.Invoke() + 0x71 bytes WindowsBase.dll!System.Windows.Threading.Dispatcher.ProcessQueue() + 0x2a1 bytes WindowsBase.dll!System.Windows.Threading.Dispatcher.WndProcHook(System.IntPtr hwnd, int msg, System.IntPtr wParam, System.IntPtr lParam, ref bool handled) + 0xb3 bytes WindowsBase.dll!MS.Win32.HwndWrapper.WndProc(System.IntPtr hwnd, int msg, System.IntPtr wParam, System.IntPtr lParam, ref bool handled) + 0x14a bytes WindowsBase.dll!MS.Win32.HwndSubclass.DispatcherCallbackOperation(object o) + 0x80 bytes WindowsBase.dll!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate callback, object args, int numArgs) + 0x5e bytes WindowsBase.dll!MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(object source, System.Delegate method, object args, int numArgs, System.Delegate catchHandler) + 0x47 bytes WindowsBase.dll!System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority priority, System.TimeSpan timeout, System.Delegate method, object args, int numArgs) + 0x2bc bytes WindowsBase.dll!MS.Win32.HwndSubclass.SubclassWndProc(System.IntPtr hwnd, int msg, System.IntPtr wParam, System.IntPtr lParam) + 0x140 bytes [Native to Managed Transition] [Managed to Native Transition] WindowsBase.dll!System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame frame) + 0x112 bytes PresentationFramework.dll!System.Windows.Application.RunInternal(System.Windows.Window window) + 0x17a bytes PresentationFramework.dll!System.Windows.Application.Run() + 0x67 bytes VantageVirtualDomainManagement.exe!Telestream.Genesis.Client.Gui.App.Main() + 0x77 bytes C# [Native to Managed Transition] [Managed to Native Transition] Microsoft.VisualStudio.HostingProcess.Utilities.dll!Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() + 0x5a bytes mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) + 0x285 bytes mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) + 0x9 bytes mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x57 bytes mscorlib.dll!System.Threading.ThreadHelper.ThreadStart() + 0x51 bytes [Native to Managed Transition] And here's the stack trace when the control is instantiating my CircularProgressBar user control in the infinite loop:
> VantageVirtualDomainManagement.exe!Telestream.Genesis.Client.Gui.UserControls.CircularProgressBar.CircularProgressBar() Line 36 C# mscorlib.dll!System.Activator.CreateInstance(System.Type type, bool nonPublic) + 0x7f bytes mscorlib.dll!System.RuntimeType.CreateInstanceImpl(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes, ref System.Threading.StackCrawlMark stackMark) + 0x5ff bytes mscorlib.dll!System.Activator.CreateInstance(System.Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes) + 0xc8 bytes mscorlib.dll!System.Activator.CreateInstance(System.Type type, object[] args) + 0x26 bytes System.Xaml.dll!System.Xaml.Schema.SafeReflectionInvoker.CreateInstanceCritical(System.Type type, object[] arguments) + 0x1d bytes System.Xaml.dll!System.Xaml.Schema.XamlTypeInvoker.CreateInstance(object[] arguments) + 0x97 bytes System.Xaml.dll!MS.Internal.Xaml.Runtime.ClrObjectRuntime.CreateInstance(System.Xaml.XamlType xamlType, object[] args) + 0x85 bytes System.Xaml.dll!MS.Internal.Xaml.Runtime.PartialTrustTolerantRuntime.CreateInstance(System.Xaml.XamlType xamlType, object[] args) + 0x87 bytes System.Xaml.dll!System.Xaml.XamlObjectWriter.Logic_CreateAndAssignToParentStart(MS.Internal.Xaml.Context.ObjectWriterContext ctx) + 0xbc bytes System.Xaml.dll!System.Xaml.XamlObjectWriter.WriteEndObject() + 0x44d bytes PresentationFramework.dll!System.Windows.FrameworkTemplate.LoadTemplateXaml(System.Xaml.XamlReader templateReader, System.Xaml.XamlObjectWriter currentWriter) + 0x56 bytes PresentationFramework.dll!System.Windows.FrameworkTemplate.LoadTemplateXaml(System.Xaml.XamlObjectWriter objectWriter) + 0x67 bytes PresentationFramework.dll!System.Windows.FrameworkTemplate.LoadOptimizedTemplateContent(System.Windows.DependencyObject container, System.Windows.Markup.IComponentConnector componentConnector, System.Windows.Markup.IStyleConnector styleConnector, System.Collections.Generic.List<System.Windows.DependencyObject> affectedChildren, System.Windows.UncommonField<System.Collections.Hashtable> templatedNonFeChildrenField) + 0x363 bytes PresentationFramework.dll!System.Windows.FrameworkTemplate.LoadContent(System.Windows.DependencyObject container, System.Collections.Generic.List<System.Windows.DependencyObject> affectedChildren) + 0xaf bytes PresentationFramework.dll!System.Windows.FrameworkTemplate.LoadContent() + 0x52 bytes Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridViewColumn.GenerateElementWithHashCode(System.Windows.DataTemplate template) Line 362 + 0x12 bytes C# Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridViewColumn.GenerateElementFromCellTemplate(Telerik.Windows.Controls.GridView.GridViewCell cell, System.Windows.DataTemplate template, out System.Windows.FrameworkElement element) Line 335 + 0xd bytes C# Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridViewColumn.CreateCellElement(Telerik.Windows.Controls.GridView.GridViewCell cell, object dataItem) Line 321 + 0x19 bytes C# Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridViewBoundColumnBase.CreateCellElement(Telerik.Windows.Controls.GridView.GridViewCell cell, object dataItem) Line 117 + 0x1d bytes C# Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.GridViewCell.CreateCellElement(Telerik.Windows.Controls.GridViewColumn column, object dataItem) Line 563 + 0x2b bytes C# Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.GridViewCell.BuildVisualTree() Line 557 C# Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.GridViewCell.SetCellElement() Line 520 C# Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.GridViewRow.PrepareCell(Telerik.Windows.Controls.GridView.GridViewCellBase cellBase, Telerik.Windows.Controls.GridViewColumn column) Line 921 C# Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.GridViewCellsPanel.PrepareCell(Telerik.Windows.Controls.GridView.GridViewCellBase cell, Telerik.Windows.Controls.GridViewColumn column) Line 404 C# Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.GridViewCellsPanel.GetVirtualizedCell(Telerik.Windows.Controls.GridViewColumn column, bool createIfNull) Line 365 C# Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.GridViewCellsPanel.RealizeAndMeasureCells(int startIndex, int predictedLastIndex, System.Func<int,int> calculateNextIndex) Line 300 + 0x15 bytes C# Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.GridViewCellsPanel.UpdateVirtualizedCells() Line 235 C# Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.GridViewCellsPanel.MeasureOverride(System.Windows.Size availableSize) Line 289 + 0xd bytes C# PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x313 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes PresentationFramework.dll!MS.Internal.Helper.MeasureElementWithSingleChild(System.Windows.UIElement element, System.Windows.Size constraint) + 0x6a bytes PresentationFramework.dll!System.Windows.Controls.ItemsPresenter.MeasureOverride(System.Windows.Size constraint) + 0x26 bytes PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x313 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes PresentationFramework.dll!System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size constraint) + 0x11e bytes PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x313 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes PresentationFramework.dll!System.Windows.Controls.Control.MeasureOverride(System.Windows.Size constraint) + 0x6a bytes PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x313 bytes PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x521 bytes PresentationCore.dll!System.Windows.ContextLayoutManager.UpdateLayout() + 0x569 bytes PresentationCore.dll!System.Windows.ContextLayoutManager.UpdateLayoutCallback(object arg) + 0x22 bytes PresentationCore.dll!System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks() + 0x96 bytes PresentationCore.dll!System.Windows.Media.MediaContext.RenderMessageHandlerCore(object resizedCompositionTarget) + 0xdf bytes PresentationCore.dll!System.Windows.Media.MediaContext.RenderMessageHandler(object resizedCompositionTarget) + 0x2f bytes WindowsBase.dll!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate callback, object args, int numArgs) + 0x5e bytes WindowsBase.dll!MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(object source, System.Delegate method, object args, int numArgs, System.Delegate catchHandler) + 0x47 bytes WindowsBase.dll!System.Windows.Threading.DispatcherOperation.InvokeImpl() + 0x281 bytes mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) + 0x285 bytes mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) + 0x9 bytes mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x57 bytes WindowsBase.dll!System.Windows.Threading.DispatcherOperation.Invoke() + 0x71 bytes WindowsBase.dll!System.Windows.Threading.Dispatcher.ProcessQueue() + 0x2a1 bytes WindowsBase.dll!System.Windows.Threading.Dispatcher.WndProcHook(System.IntPtr hwnd, int msg, System.IntPtr wParam, System.IntPtr lParam, ref bool handled) + 0xb3 bytes WindowsBase.dll!MS.Win32.HwndWrapper.WndProc(System.IntPtr hwnd, int msg, System.IntPtr wParam, System.IntPtr lParam, ref bool handled) + 0x14a bytes WindowsBase.dll!MS.Win32.HwndSubclass.DispatcherCallbackOperation(object o) + 0x80 bytes WindowsBase.dll!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate callback, object args, int numArgs) + 0x5e bytes WindowsBase.dll!MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(object source, System.Delegate method, object args, int numArgs, System.Delegate catchHandler) + 0x47 bytes WindowsBase.dll!System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority priority, System.TimeSpan timeout, System.Delegate method, object args, int numArgs) + 0x2bc bytes WindowsBase.dll!MS.Win32.HwndSubclass.SubclassWndProc(System.IntPtr hwnd, int msg, System.IntPtr wParam, System.IntPtr lParam) + 0x140 bytes [Native to Managed Transition] [Managed to Native Transition] WindowsBase.dll!System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame frame) + 0x112 bytes PresentationFramework.dll!System.Windows.Application.RunInternal(System.Windows.Window window) + 0x17a bytes PresentationFramework.dll!System.Windows.Application.Run() + 0x67 bytes VantageVirtualDomainManagement.exe!Telestream.Genesis.Client.Gui.App.Main() + 0x77 bytes C# [Native to Managed Transition] [Managed to Native Transition] Microsoft.VisualStudio.HostingProcess.Utilities.dll!Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() + 0x5a bytes mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) + 0x285 bytes mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) + 0x9 bytes mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x57 bytes mscorlib.dll!System.Threading.ThreadHelper.ThreadStart() + 0x51 bytes [Native to Managed Transition] I have tried turning data virturalization on and off with no change the results. I have used the RadGridConrol with much success in the past, but I'm stumped here. I hope I'm just missing something stupid.
Any suggestions? Thanks.