没有 MetroWindow 的 Mahapps Metro 对话框
Mahapps Metro Dialog without MetroWindow
我想在我的应用程序中使用 mahapps.metro 的对话框。我的 window 是正常的 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
我该如何解决这个问题?
My window is a normal window.
那是你的问题。由于 ShowMessageAsync
是 MetroWindow
class 的扩展方法,您必须引用 MetroWindow
才能调用它。这意味着您必须用 MetroWindow
替换正常的 window 或使用另一个对话框。 ShowMessageAsync
方法仅适用于 MetroWindow
.
以下代码尝试将应用程序的 MainWindow
window 转换为 MetroWindow
但如果主 window 确实是正常的,转换将始终失败window:
var metroWindow = (Application.Current.MainWindow as MetroWindow);
这就是为什么你得到 NullReferenceException
。
How can I solve this problem?
您必须使用 MetroWindow。恐怕没有其他解决方案。
我想在我的应用程序中使用 mahapps.metro 的对话框。我的 window 是正常的 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
我该如何解决这个问题?
My window is a normal window.
那是你的问题。由于 ShowMessageAsync
是 MetroWindow
class 的扩展方法,您必须引用 MetroWindow
才能调用它。这意味着您必须用 MetroWindow
替换正常的 window 或使用另一个对话框。 ShowMessageAsync
方法仅适用于 MetroWindow
.
以下代码尝试将应用程序的 MainWindow
window 转换为 MetroWindow
但如果主 window 确实是正常的,转换将始终失败window:
var metroWindow = (Application.Current.MainWindow as MetroWindow);
这就是为什么你得到 NullReferenceException
。
How can I solve this problem?
您必须使用 MetroWindow。恐怕没有其他解决方案。