MahApps.Metro icon indicating copy to clipboard operation
MahApps.Metro copied to clipboard

designer issue

Open TheCamel opened this issue 1 year ago • 5 comments

Describe the bug

I have a hamburgerMeun in a user control...designer display well

but this user control is included into a MetroWindow and and it crash the designer like below

even if i remove the handler :-(

<mah:HamburgerMenu x:Name="HamburgerMenuControl"
				   DisplayMode="CompactOverlay"
				   HamburgerWidth="48"
				   CanResizeOpenPane="False"
				   ItemTemplate="{StaticResource HamburgerMenuItem}"
				   OptionsItemTemplate="{StaticResource HamburgerOptionsMenuItem}"
				   **ItemInvoked="HamburgerMenuControl_ItemInvoked"**
				   SelectedIndex="0"
				   IsPaneOpen="False"
				   OptionsItemClick="HamburgerMenuControl_OptionsItemClick">

Environment

MahApps.Metro version: alpha 0492 Target Framework: .Net Core 8

   at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr)
   at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Delegate.DynamicInvokeImpl(Object[] args)
   at System.Windows.RoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at MahApps.Metro.Controls.HamburgerMenu.RaiseItemEvents(Object selectedItem) in C:\projects\mahapps-metro\src\MahApps.Metro\Controls\HamburgerMenu\HamburgerMenu.Events.cs:line 139
   at MahApps.Metro.Controls.HamburgerMenu.HamburgerMenu_Loaded(Object sender, RoutedEventArgs e) in C:\projects\mahapps-metro\src\MahApps.Metro\Controls\HamburgerMenu\HamburgerMenu.cs:line 91
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.BroadcastEventHelper.BroadcastEvent(DependencyObject root, RoutedEvent routedEvent)
   at System.Windows.BroadcastEventHelper.BroadcastLoadedEvent(Object root)
   at System.Windows.Media.MediaContext.FireLoadedPendingCallbacks()
   at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
   at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
   at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

TheCamel avatar May 24 '24 12:05 TheCamel

please attach a minimal sample. Also the StackTrace seems to be incomplete, please post the entire error message printed.

timunie avatar May 27 '24 07:05 timunie

I can't it's prod application too complex...and the trace is from the designer windows of visual... I will investiguate to see if i can find out more

TheCamel avatar May 28 '24 17:05 TheCamel

@TheCamel Which version of VS do you use?

punker76 avatar May 28 '24 17:05 punker76

@punker76 Microsoft Visual Studio Professional 2022 (64 bits) - Current Version 17.9.6

TheCamel avatar May 28 '24 18:05 TheCamel

I tried to debug visual with another visual, but can't get any "catch". May be I have to include the mahapps project in my solution. I used the trick from here https://docs.devexpress.com/GeneralInformation/403685/support-services/obtain-exception-call-stack#get-exception-call-stack-of-design-time-errors-in-visual-studio

TheCamel avatar May 29 '24 08:05 TheCamel

@punker76

I avoid the crash by testing the design property

private void HamburgerMenuControl_ItemInvoked(object sender, HamburgerMenuItemInvokedEventArgs args) { if (args.IsItemOptions || System.ComponentModel.DesignerProperties.GetIsInDesignMode(this) ) { return; }

TheCamel avatar Jul 09 '24 08:07 TheCamel

In fact in handler i have the commented line below at the end that cause the exception in the main window, but not in the user control itself. I will try to write it more secure=> nothing change, same crash Danke. btw i would prefer an update on the other HamburgerMenu issue....tchu$$

private void HamburgerMenuControl_ItemInvoked(object sender, HamburgerMenuItemInvokedEventArgs args)
{
	if (args.IsItemOptions)
	{
		return;
	}

	HamburgerMenuControl.Content = args.InvokedItem;

	// close the menu if a item was selected
	if (HamburgerMenuControl.IsPaneOpen)
	{
		HamburgerMenuControl.IsPaneOpen = false;
	}

	**//((HomeViewModel)DataContext).CurrentView = (ObservableRecipient)((UserControl)((HamburgerMenuIconItem)args.InvokedItem).Tag).DataContext;**
}

TheCamel avatar Jul 09 '24 11:07 TheCamel