我可以帮助您翻译如下内容:
然而,我已经在不包括它的情况下构建了我的程序,并且包含它会破坏所有样式。此外,总共没有很多重音符号请看这里,我找不到适合我的方案的重音符号。
我一直试图直接为
但是同样的错误仍然出现。有没有办法绕过这个问题?我该如何让对话框使用自己的样式?
编辑
实际上,我已经在这里下载了文件:https://github.com/MahApps/MahApps.Metro/blob/master/MahApps.Metro/Styles/Accents/Cobalt.xaml 并且在ResourceDirectory.MergedDictionaries中替换了。
我想展示一个类似于Metro风格的对话框:
public async void Button_Click(object sender, RoutedEventArgs e)
{
var metroWindow = (Application.Current.MainWindow as MetroWindow);
await metroWindow.ShowMessageAsync("Title", "Body");
}
然而,它一直抛出以下错误:
未经处理的类型“System.NullReferenceException”的异常发生在 mscorlib.dll 中
带有堆栈跟踪:
at MahApps.Metro.Controls.Dialogs.BaseMetroDialog.HandleTheme()
at MahApps.Metro.Controls.Dialogs.BaseMetroDialog.Initialize()
at MahApps.Metro.Controls.Dialogs.BaseMetroDialog..ctor(MetroWindow owningWindow, MetroDialogSettings settings)
...
at System.Threading.ThreadHelper.ThreadStart()
所以经过很多调试后,我意识到需要在我的 App.xaml
资源中包含一个重音符号,以给它一个颜色方案。
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Cobalt.xaml" />
然而,我已经在不包括它的情况下构建了我的程序,并且包含它会破坏所有样式。此外,总共没有很多重音符号请看这里,我找不到适合我的方案的重音符号。
我一直试图直接为
ShowMessageAsync
方法提供自己的颜色方案,例如使用以下命令:metroWindow.MetroDialogOptions.ColorScheme = MetroDialogOptions.ColorScheme
// MetroDialogColorScheme.Theme
// MetroDialogColorScheme.Accented
// MetroDialogColorScheme.Inverted;
但是同样的错误仍然出现。有没有办法绕过这个问题?我该如何让对话框使用自己的样式?
编辑
实际上,我已经在这里下载了文件:https://github.com/MahApps/MahApps.Metro/blob/master/MahApps.Metro/Styles/Accents/Cobalt.xaml 并且在ResourceDirectory.MergedDictionaries中替换了。
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Cobalt.xaml" />
With
<ResourceDictionary Source="Cobalt.xaml" />
这已经足以破坏函数了。我可以看到主题仍在生效,但当我尝试触发对话框时,窗口会淡出,但对话框不会出现,我需要重新启动程序。发生了什么事情?
ThemeManager.DetectAppStyle()
和ThemeManager.DetectAppStyle(Application.Current)
都返回null
。 - Charles Clayton<DataGrid.Resources> <ResourceDictionary Source="pack:/.../Accents/BaseLight.xaml" /> </DataGrid.Resources>
。 - Charles Clayton