如何动态更改 ResourceDictionary

Sha*_*nda 5 c# wpf resourcedictionary

我需要动态更改ResourceDictionary文件App.xaml。我尝试过以下代码:

ResourceDictionary newRes = new ResourceDictionary();
newRes.Source = new Uri("/PsyboInventory;component/TitleBarResource.xaml", UriKind.RelativeOrAbsolute);
this.Resources.MergedDictionaries.Clear();
this.Resources.MergedDictionaries.Add(newRes);
Run Code Online (Sandbox Code Playgroud)

没有错误,但是主题没有改变

Jus*_* CI 4

在按钮单击中您可以编写此代码

var app = (App)Application.Current;
app.ChangeTheme(new Uri("New Uri here"));
Run Code Online (Sandbox Code Playgroud)

改变主题:

public partial class App : Application
    {
        public ResourceDictionary ThemeDictionary
        {
            // You could probably get it via its name with some query logic as well.
            get { return Resources.MergedDictionaries[0]; }
        }
    
        public void ChangeTheme(Uri uri)
        {
            ThemeDictionary.MergedDictionaries.Clear();
            ThemeDictionary.MergedDictionaries.Add(new ResourceDictionary() { Source = uri });
        } 
       
    }   

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary x:Name="ThemeDictionary">
                    <ResourceDictionary.MergedDictionaries>
                        <ResourceDictionary Source="/Themes/ShinyRed.xaml"/>
                    </ResourceDictionary.MergedDictionaries>
                </ResourceDictionary>
    </ResourceDictionary.MergedDictionaries>
Run Code Online (Sandbox Code Playgroud)