MahApps Metro DialogCoordinator:显示对话框以仅跨越 UserControl(而不是整个 window)?

MahApps Metro DialogCoordinator: Display Dialog to span UserControl only (instead of entire window)?

我正在寻找在我的应用程序中以最佳方式显示对话框 windows 的不同方法。 MahApp Metro 的 IDialogCoordinator 似乎很有用,但我还不能完全适应我的用例。

假设我正在创建一个 UserControl(视图),其 ViewModel 需要能够显示对话。 这些对话框在显示时应该 overlay/span 仅 UserControl,而不是托管 UserControl 的整个 Window。

有什么办法可以实现吗?

默认行为似乎总是跨越整个 window,我还没有找到任何改变它的方法。

到目前为止,我一直以非常直接的方式使用对话协调器,在我看来执行以下操作:

    <UserControl
         xmlns:Dialog="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
        Dialog:DialogParticipation.Register="{Binding}">

并通过

在我的视图的构造函数中设置实例
viewModel.Initialize(DialogCoordinator.Instance);

然后我会通过

在视图模型中调用它
    IDialogCoordinator _DialogCoordinator;  // set with viewModel.Initialize() called from the view

private async Task _SomeCmdExecute()
    {
      await _DialogCoordinator.ShowMessageAsync(this, "HEADER", "TEST");
    }

谢谢!

MahApps.Metro 中的对话框 总是 在 window 级别(参见 window 中的容器 PART_MetroActiveDialogContainer风格。)

您可以做的是更改对话框的样式,这样它们就不会水平延伸到整个 window。请参阅默认模板 MetroDialogTemplate 以供参考。