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
以供参考。
我正在寻找在我的应用程序中以最佳方式显示对话框 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
以供参考。