多个资源词典,选择一个

时间:2012-09-12 11:09:49

标签: wpf resourcedictionary

我正在开发一个使用资源字典进行样式化的应用程序。我必须进行更改,以使配置设置能够更改正在使用的字典。

我有三本词典。 Original.xaml,Neon.xaml& Graphite.xaml

在App.xaml中我有..

     <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Resources/Original.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

我可以通过调用..来改变正在使用的字典。

        private void DynamicLoadStyles(string StyleToUse)
        {
        string fileName = "C:\\Data\\Projects\\MyApp\\MyApp\\Resources\\" + StyleToUse + ".xaml";

            using (FileStream fs = new FileStream(fileName, FileMode.Open))
            {
                ResourceDictionary dic =
                   (ResourceDictionary)XamlReader.Load(fs);
                Resources.MergedDictionaries.Clear();
                Resources.MergedDictionaries.Add(dic);
            }
         }

一切都按预期工作(但我不确定这是否是正确的方法)。问题是我宁愿嵌入文件而不必从外部文件加载它们。

我搜索了信息以帮助但找不到我要找的东西。那说我是WPF的新手(3周)而且还不确定我在做什么。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

我真的不想回答我自己的问题,因为它表明我不应该首先提出问题。但是我用....解决了这个问题。

    private void LoadDynamicResource(String StyleToUse)
    {

        ResourceDictionary dic = new ResourceDictionary { Source = new Uri(StyleToUse, UriKind.Relative) };
        Resources.MergedDictionaries.Clear();
        Resources.MergedDictionaries.Add(dic);

    }

我会对这方面的意见感兴趣。