2013-02-18 93 views
9

我正在編寫一個win8應用程序,並將使用我的XAML代碼中的內置資源管理系統:resw文件和x:Uid標記。資源本地化:使用x:UID引用另一個程序集的資源

所以我創建比方說,一個TextBox這樣的:

<TextBlock Style="{StaticResource HeaderTextStyle}" x:Uid="ResourceTest"/> 

我在一個ResourceTest.Text進入集中創建相應的資源文件,它工作正常:正確的文本在運行時顯示。

現在,我想將所有的resx文件移動到另一個C#庫以實現可維護性。因此,我將資源文件放在一個全新的項目中,並從主程序集中引用這個新程序集。

但是,這會導致以前的構造失敗(不顯示文本)。

不過,如果我使用下面的代碼從側面組件(稱爲ResourcesLibrary)內編程方式檢索資源值,我正確地得到字符串:

static ResourceLoader resourceLoader = null; 
public static string GetString(string resourceName) 
{ 
    if (resourceLoader == null) 
     resourceLoader = new ResourceLoader ("ResourcesLibrary/Resources"); 
    return resourceLoader.GetString (resourceName); 
} 

打交道時,如何使x:Uid機制有超出裝配的資源?

我嘗試了x:Uid中的一些東西,如ResourcesLibrary/Resources/ResourceTest,但沒有運氣。

+0

自問這個問題後,您是否找到了解決方案?我現在面臨同樣的問題。 – 2013-05-22 07:51:01

+0

nope,我又回到使用相同的大會,沒有時間調查。 – Mic 2013-05-24 20:44:06

+2

實際上,我們已經結束使用這個工具來生成resw資源文件的代碼隱藏類,即使當resw在另一個程序集中時也可以像魅力一樣工作:http://reswcodegen.codeplex.com/ – 2013-05-26 18:05:37

回答

10

訪問我長期以來也遇到同樣的問題。但經過一些測試後,我通過編寫XAML代碼中的整個資源路徑來解決這個問題。

事情是這樣的:

<TextBlock x:Uid="/ResourcesLibrary/Resources/ResourceTest" /> 

不幸的是這個答案來得非常晚,但可能它可以幫助其他人。

+1

感謝您回來併發布這個。 – 2016-03-09 17:07:22

0

根據我的理解,如果資源保存在.resx文件中,則不能使用x:Uid。

如果你使用.resw文件,您可以訪問任何大會,他們均居於字符串。

,他們可以爲你在你的問題中提到這樣的「ResourcesLibrary /資源/ ResourceTest」