![](/img/trans.png)
[英]MahApps.Metro MetroWindow.ShowMessageAsync does not exist
[英]Mahapps Metro Dialog without MetroWindow
我想在我的应用程序中使用mahapps.metro对话框。 我的窗户是普通window
。
public partial class MainWindow : Window
不是
MetroWindow
在我的按钮方法中,我这样写:
var metroWindow = (Application.Current.MainWindow as MetroWindow);
await metroWindow.ShowMessageAsync("Foo", "Bar");
我在App.xaml.cs
添加了一个ThemeManager
protected override void OnStartup(StartupEventArgs e)
{
Tuple<AppTheme, Accent> appStyle = ThemeManager.DetectAppStyle(Application.Current);
ThemeManager.ChangeAppStyle(Application.Current,
ThemeManager.GetAccent("Green"),
ThemeManager.GetAppTheme("BaseDark")); // or appStyle.Item1
base.OnStartup(e);
}
在App.xaml
我添加了
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Cobalt.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
当我执行程序时,我得到一个
NullReferenceException
因为metroWindow
== null
我怎么解决这个问题?
我的窗户是普通窗户。
那是你的问题。 由于ShowMessageAsync
是MetroWindow
类的扩展方法,因此必须具有对MetroWindow
的引用才能调用它。 这意味着您必须用MetroWindow
替换常规窗口或使用另一个对话框。 ShowMessageAsync
方法仅适用于MetroWindow
。
以下代码尝试将应用程序的MainWindow
窗口MetroWindow
转换为MetroWindow
但是如果主窗口确实是普通窗口,则MetroWindow
将始终失败:
var metroWindow = (Application.Current.MainWindow as MetroWindow);
这就是为什么您得到NullReferenceException
的原因。
我怎么解决这个问题?
您必须使用MetroWindow。 恐怕没有其他解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.