MahApps Metro DialogCoordinator:显示对话框只能跨越UserControl(而不是整个窗口)?

时间:2017-08-21 13:47:35

标签: c# wpf mahapps.metro

我正在寻找在我的应用程序中最佳显示对话框窗口的不同方法。 MahApp Metro的IDialogCoordinator似乎非常有用,但我还是无法根据我的用例进行调整。

假设我正在创建一个UserControl(视图),其ViewModel需要能够显示对话框。 显示时,这些对话应仅覆盖/跨越UserControl,而不是覆盖UserControl的整个窗口。

有没有办法实现这个目标?

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

到目前为止,我一直在以非常简单的方式使用Dialog协调员,在我看来做了以下几点:

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

并设置在视图的构造函数中设置实例,

viewModel.Initialize(DialogCoordinator.Instance);

然后我将通过

在viewmodel中调用
    IDialogCoordinator _DialogCoordinator;  // set with viewModel.Initialize() called from the view

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

谢谢!

1 个答案:

答案 0 :(得分:1)

MahApps.Metro中的对话框在窗口级别始终(请参阅窗口样式中的容器PART_MetroActiveDialogContainer。)

您可以做的是更改对话框的样式,因此它们不会在整个窗口中水平拉伸。请参阅默认模板MetroDialogTemplate以供参考。