我一直在搜索程序集是否有可能在運行時從另一個程序集更改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;
它認識到資源,但不會改變它。是否有可能在運行時更改另一個程序集字典的值,或者是否需要創建可由兩個程序集共享的外部字典?
編輯:
用戶控件包含Resources.xaml。我定義的資源,這種控制是這樣的:
<UserControl.Resources> <ResourceDictionary Source="Configuration/Resources.xaml"/> </UserControl.Resources>
設置工具可接取這個資源,但我不能改變他們。當我這樣做時,用戶控件仍然讀取舊值。資源在設置工具定義的,像這樣:
<Window.Resources> <ResourceDictionary Source="pack://application:,,,/Control;component/Configuration/Resources.xaml"/> </Window.Resources>
當你說「不會改變」,你的意思是它拋出一個錯誤,或者只是從來沒有表現的變化?如果它拋出,那麼你的資源可能被凍結,如果它沒有顯示,那麼使用DynamicResource而不是StaticResource。 – GazTheDestroyer
嗨。感謝您的評論。沒有錯誤被拋出。這些變化從未表現出來。讓我試試DynamicResource。 –