Posted 15 years ago
by Phil Devaney
-
Senior Software Engineer,
Serck Controls Ltd
Version: 9.1.0505
Platform: .NET 3.5
Environment: Windows Vista (64-bit)
I've been using the DataTemplates described in this post http://www.actiprosoftware.com/Support/Forums/ViewForumTopic.aspx?ForumTopicID=3495 to display context menus that are built using data-binding, and most of the time its works fine. However I have recently discovered a bug that causes a StackOverflowException with the following repeated call stack:
I've emailed a sample project that demonstrates the problem. To reproduce, display the context menu for the top button, which consists of a single item with a sub-menu. BEFORE the sub-menu is automatically displayed, left-click the top-level item and the StackOverflowException is thrown. The same thing on a normally, statically defined menu doesn't crash.
etc. etc.
System.Windows.DependencyObject.SetValue(dp, value)
ActiproSoftware.Windows.Controls.Ribbon.Controls.Primitives.PopupButtonBase.IsPopupOpen.set(value = true)
ActiproSoftware.Windows.Controls.Ribbon.UI.PopupControlService.f(A_0 = {ActiproSoftware.Windows.Controls.Ribbon.Controls.PopupButton})
ActiproSoftware.Windows.Controls.Ribbon.UI.PopupControlService.b(A_0 = {ActiproSoftware.Windows.Controls.Ribbon.Controls.PopupButton}, A_1 = {System.Windows.DependencyPropertyChangedEventArgs})
System.Windows.DependencyObject.OnPropertyChanged(e)
System.Windows.FrameworkElement.OnPropertyChanged(e = {System.Windows.DependencyPropertyChangedEventArgs})
ActiproSoftware.Windows.Controls.Ribbon.Controls.Primitives.ControlBase.OnPropertyChanged(e = {System.Windows.DependencyPropertyChangedEventArgs})
ActiproSoftware.Windows.Controls.Ribbon.Controls.Primitives.ButtonBase.OnPropertyChanged(e = {System.Windows.DependencyPropertyChangedEventArgs})
ActiproSoftware.Windows.Controls.Ribbon.Controls.PopupButton.OnPropertyChanged(e = {System.Windows.DependencyPropertyChangedEventArgs})
System.Windows.DependencyObject.NotifyPropertyChange(args = {System.Windows.DependencyPropertyChangedEventArgs})
System.Windows.DependencyObject.UpdateEffectiveValue(entryIndex, dp, metadata, oldEntry = {System.Windows.EffectiveValueEntry}, newEntry, coerceWithDeferredReference, operationType)
System.Windows.DependencyObject.SetValueCommon(dp, value, metadata, coerceWithDeferredReference, operationType, isInternal)
System.Windows.DependencyObject.SetValue(dp, value)