![](/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.