Xaml 如何在代码behinde中使用管理器

Xaml 如何在代码behinde中使用管理器,xaml,mahapps.metro,Xaml,Mahapps.metro,我是新来的mahapps.metro主题。当我使用管理器时,它只工作一次,然后在第二次使用时,它会引发空引用异常。例如,首先我选择蓝色主题,它可以工作,但之后我选择绿色主题,它不工作,并引发空引用异常。 下面是一个示例代码: ThemeManager.ChangeAppStyle(Application.Current, ThemeManager.GetAccent("Blue"),

我是新来的mahapps.metro主题。当我使用管理器时,它只工作一次,然后在第二次使用时,它会引发空引用异常。例如,首先我选择蓝色主题,它可以工作,但之后我选择绿色主题,它不工作,并引发空引用异常。 下面是一个示例代码:

ThemeManager.ChangeAppStyle(Application.Current,
                                    ThemeManager.GetAccent("Blue"),
                                    ThemeManager.GetAppTheme("BaseDark"));
 ThemeManager.ChangeAppStyle(Application.Current,
                                    ThemeManager.GetAccent("Green"),
                                    ThemeManager.GetAppTheme("BaseDark"));

有什么问题吗?

这一行应该在App.xaml代码后面或主窗口构造函数中的这一点上起作用

using System.Windows;
using MahApps.Metro;

namespace MetroDemo
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            ThemeManager.ChangeAppStyle(Application.Current,
                                        ThemeManager.GetAccent("Blue"),
                                        ThemeManager.GetAppTheme("BaseDark"));
            ThemeManager.ChangeAppStyle(Application.Current,
                                        ThemeManager.GetAccent("Green"),
                                        ThemeManager.GetAppTheme("BaseDark"));
        }
    }
}
使用System.Windows;
使用MahApps.Metro;
命名空间MetroDemo
{
/// 
///App.xaml的交互逻辑
/// 
公共部分类应用程序:应用程序
{
启动时受保护的覆盖无效(StartupEventArgs e)
{
基础。启动时(e);
管理器.ChangeAppStyle(Application.Current,
管理器.GetAccent(“蓝色”),
GetAppTheme(“BaseDark”);
管理器.ChangeAppStyle(Application.Current,
管理器.GetAccent(“绿色”),
GetAppTheme(“BaseDark”);
}
}
}
确保您正在向App.xaml添加必要的资源,因为您想更改应用的资源

<Application x:Class="MetroDemo.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
  <Application.Resources>
    <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! -->
        <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
        <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
        <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
        <!-- Accent and AppTheme setting -->
        <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
        <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  </Application.Resources>
</Application>

希望这有帮助