从外部程序集编辑 ResourceDictionary

Edit ResourceDictionary from an external assembly

我一直在寻找一个程序集是否可以在运行时更改另一个程序集的 ResourceDictionary 值。到目前为止我什么也没发现。 这是交易。我有一个可以独立工作的 UserControl,因此它可以适用于不同的项目。我的 UserControl 有自己的 Resources.xaml(编译为资源)。 我有第二个程序集,它用作此用户控件的设置工具。它基本上只是读取 UserControl Resources.xaml(效果很好),然后替换 Resources.Xaml 的值。问题是,我无法更改资源值。

这是我在设置工具上用来读取 ResourceDictionary 的代码:

    <Window.Resources>
     <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/Control;component/Configuration/Resources.xaml"/>
        </ResourceDictionary.MergedDictionaries>
     </ResourceDictionary>
    </Window.Resources>

要更改此值,我尝试了类似的方法:

this.Resources.MergedDictionaries.First()["IsZoomable"] = false;

它确实识别资源,但不会更改它。甚至可以在运行时更改另一个程序集的字典值,还是我需要创建一个两个程序集都可以访问的外部字典?

编辑:


是的,您可以在运行时更改资源的值。 由于您已经合并了字典,您可以像这样更改值:

this.Resources["IsZoomable"]=false;

确保资源键与实际键匹配。
如果你合并了app.xaml中的字典,那么你可以使用:

Application.current.Resources["IsZoomable"]=false;