2012-04-12 110 views
2

我將Silverlight XAML/C#應用程序轉換爲Metro。對於C#代碼沒有問題。對於XAML來說,從我讀的內容來看,對XAML有新的支持來簡化流程。不過,我希望重複使用相同的resx文件,所以我更喜歡XAML的舊silverlight機制,即Markup Extension或Binding。我只是試過MarkupExtension,但似乎並不支持。如何轉換資源綁定。注意我的目標是在資源文件中重用名稱 - 值對,因此我將無法使用新的Metro綁定機制。Windows 8地鐵XAML本地化

有什麼建議嗎?

像這樣的東西在Silverlight:

XAML:

<sdk:TabItem Header="{Binding Path=Resource.charts, Source={StaticResource LocalizedStrings}}"/> 

LocalizedStrings.cs

public partial class LocalizedStrings 
    { 

     private static Resources.Resource resource = new Resources.Resource(); 

     public Resources.Resource Resource { get { return resource; } } 
    } 

新的Metro風格的定位,我將無法使用,由於舊碼重複使用:

<TextBlock x:Uid="HelloWorld" /> 

回答

1

我最終寫了一個轉換器來改變我所有的資源文件。 Silverlight資源文件中的「somekey」被轉換爲「somekey.Content」。這將通過Content屬性自動處理一些UI元素,例如Button。

0

如果您不想更改名稱/值對,則必須使用ResourceLoader類來訪問.resw文件。

var resourceLoader = new ResourceLoader(); 
// access a given name key 
var var someValue = resourceLoader.GetString("someKey"); 

這意味着您必須編寫相當多的屬性來綁定,並將XAML更改爲新的可綁定屬性。因此,畢竟可能需要考慮更改爲新的Metro本地化。

有關本地化的完整示例可以在win8 dev center上找到。