2012-04-12 3 views
2

Я конвертирую приложение XAML/C# для Silverlight в Metro. Для кода C# нет проблем. Для XAML, из того, что я прочитал, появилась новая поддержка XAML для упрощения процесса. Однако я надеюсь повторно использовать одни и те же файлы resx, поэтому я предпочитаю старый механизм Silverlight для XAML, то есть расширение разметки или привязку. Я просто попробовал MarkupExtension, но он, похоже, не поддерживает. Как преобразовать привязку ресурса. Обратите внимание, моя цель состоит в том, чтобы повторно использовать пары имя-значение в файлах ресурсов, поэтому я не смогу использовать новый механизм привязки Metro.Windows 8 Metro 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; } } 
    } 
локализации стиль

New Metro, что я не буду иметь возможность использовать из-за старого кода повторное использование:

<TextBlock x:Uid="HelloWorld" /> 

ответ

1

В конечном итоге я пишу конвертер, чтобы изменить все мои файлы ресурсов. «somekey» из файла ресурсов Silverlight преобразуется в «somekey.Content». Это автоматически позаботится о некоторых элементах пользовательского интерфейса со свойством Content, таким как Button.

0

Если вы не хотите менять пары имя-значение, вам необходимо использовать класс ResourceLoader для доступа к файлам .resw.

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

Это означает, что вам придется написать довольно некоторые свойства вяжут и изменить XAML к новому привязываемых свойствам. Поэтому, возможно, стоит подумать о переходе на новую локализацию Metro.

Полный пример локализации можно найти на win8 dev center.

Смежные вопросы