【发布时间】:2020-11-23 08:10:02
【问题描述】:
如何在我的 MvvmCross 应用程序中显示加载对话框?
一开始我是这样(MvvmCross standard);
[MvxWindowPresentation(Modal = true)]
public partial class LoadingView : MvxWindow
{
public LoadingView () => InitializeComponent();
}
每当我需要 LoadingDialog 时;
_navigationService.Navigate<LoadingView>());
这看起来很奇怪,因为模态视图是一个新窗口,但我想在我的主应用程序中实现覆盖。
其次,用普通的用户控件和MaterialDesignThemes nugget试试;
public partial class LoadingView : UserControl
{
public LoadingView () => InitializeComponent();
}
每当我需要 LoadingDialog 时;
var result = await MaterialDesignThemes.Wpf.DialogHost.Show(new LoadingView ());
这不起作用,因为我认为必须先在 Mvx.IoCprovider 中注册 MaterialDesignThemes.Wpf.DialogHost。
【问题讨论】:
-
您是否在 XAML 中添加了
DialogHost? -
是的,我尝试使用在用户控件中声明的 DialogHost 并在 DialogHost.DialogContent 中设置
ProgressBar,然后我尝试在 UserControl.Content 中编写ProgressBar,两者都不起作用.它告诉我System.InvalidOperationException: 'No loaded DialogHost instances.' everytime. -
你把材料设计资源词典添加到
App.xaml了吗? -
是的,当然,我使用了很多来自 MaterialDesignInXaml-Toolkit 的控件
-
你在哪里调用
Show方法?在像Loaded? 这样的窗口事件处理程序中
标签: c# wpf dialog mvvmcross material-design-in-xaml