MVVMCross WPF - How to load MaterialDesign DialogHost in root (MvxWindow)?

617 Views Asked by At

I am trying to add a reusable dialog host to my test app. But unfortunately, the app always throws a 'No loaded DialogHost instances.' exception.

The code is very simple.

MainWindow.xaml

<views:MvxWindow
    ...
    >
    <materialDesign:DialogHost Identifier="RootDialog" />
</views:MvxWindow>

MainWindow.xaml.cs

public partial class MainWindow : MvxWindow
{
    public MainWindow()
    {
        InitializeComponent();
    }
}

App.xaml.cs

public partial class App : MvxApplication
{
    protected override void RegisterSetup()
    {
        this.RegisterSetupType<MvxWpfSetup<Domain.App>>();
    }
}

App.cs

public class App : MvxApplication
{
    public override void Initialize()
    {
        ...
        RegisterAppStart<DashboardViewModel>();
    }
}

DashboardView.xaml

<views:MvxWpfView
     ...
     >
     ...
     <Button Content="ShowDialog"
             Click="OnClick_ShowDialogAsync" /> 
     ...
</views:MvxWpfView>

DashboardView.xaml.cs

    public partial class DashboardView : MvxWpfView
    {
        public HomeView()
        {
            InitializeComponent();
        }

        private async void OnClick_ShowDialogAsync(object sender, RoutedEventArgs e)
        {
            var view = new SampleDialog
            {
                DataContext = new SampleDialogViewModel()
            };

             await DialogHost.Show(view, "RootDialog", ExtendedOpenedEventHandler, ExtendedClosingEventHandler);
        }

        ...
    }

But when I put this line:

<materialDesign:DialogHost Identifier="RootDialog" />

inside the DashboardView.xaml it works fine.

What am I missing?

0

There are 0 best solutions below