我正在寻找在我的应用程序中最佳显示对话框窗口的不同方法。 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");
}
谢谢!
答案 0 :(得分:1)
MahApps.Metro中的对话框在窗口级别始终(请参阅窗口样式中的容器PART_MetroActiveDialogContainer
。)
您可以做的是更改对话框的样式,因此它们不会在整个窗口中水平拉伸。请参阅默认模板MetroDialogTemplate
以供参考。