簡體   English   中英

沒有MetroWindow的Mahapps Metro對話框

[英]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

我怎么解決這個問題?

我的窗戶是普通窗戶。

那是你的問題。 由於ShowMessageAsyncMetroWindow類的擴展方法,因此必須具有對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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM