MahApps / MahApps.Metro

A framework that allows developers to cobble together a better UI for their own WPF applications with minimal effort.
https://mahapps.com
MIT License
9.3k stars 2.45k forks source link

Dialog not shown if tab is dragged out (Dragablz/TabablzControl) #4424

Open BornToBeRoot opened 1 year ago

BornToBeRoot commented 1 year ago

Describe the bug

I'm not sure if this is a bug in mahapps or a problem with the implementation.

I use the dragablz:TabablzControl and if i drag out a tab, i can't open a dialog in this window.

Steps to reproduce

MahApps_DialogCoordinator

I tried to update the DialogCoordinator when the tab was dragged out, but it doesn't work: https://github.com/BornToBeRoot/NETworkManager/pull/2517/files

Expected behavior

Dialog should open.

Actual behavior

Nothing. No Dialog, No log, no crash...

Edit: I now get sometimes this error: System.InvalidOperationException: "Context is not inside a MetroWindow."

Environment

MahApps.Metro version: v2.4.10
Windows build number: Win10 22H2 22621.2134
Target Framework: .NET 6
BornToBeRoot commented 6 months ago

I maybe found a workaround.

Instead of doing it like this...

return _dialogCoordinator.ShowMetroDialogAsync(this, customDialog);

I can find the parent window (that is currently active) and use it as context.

var window = Application.Current.Windows.OfType<Window>().FirstOrDefault(x => x.IsActive);

return _dialogCoordinator.ShowMetroDialogAsync(window, customDialog);

Inside the parent Window the dialog needs to be registered. Not just in the View&ViewModel

xmlns:dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
dialogs:DialogParticipation.Register="{Binding}"