В настоящее время я делаю простое приложение для Windows Phone 7 и пытаюсь сохранить строковые (в настоящее время только эти) значения в файле RESX, а не встраивать их все непосредственно в файлы XAML, или даже добавить код для ручной введите значения.
В WPF, чтобы использовать свойство из файла RESX, вы просто отображаете пространство имен, содержащее RESX:
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:resx="clr-namespace:Namespace.To.Your.Resx;assembly=SuppliedIfSeparate"
и затем используйте его:
<TextBlock Text="{x:Static resx:Strings.AppTitle}" />
Но я попробовал и прочитал, что x:Static
просто не поддерживается Silverlight и, соответственно, не поддерживается в WP7 ( Похоже, что они предоставили средства, но не прямой доступ к x:Static
(французский) в Silverlight 5 / Mango).
Я нашел в этом посте , описывающем класс "AppConverter
", который создается вручную для использования аналогичной функциональности, и в настоящее время это то, что я делаю. Суть поста состоит в том, чтобы создать ресурс на вашей странице XAML, который использует класс AppConverter для предварительно заданных ключей, а затем использовать его для замены x:Static
на привязку.
<TextBlock Text="{Binding Source={StaticResource AppTitle},Converter={StaticResource ResourceRetriever}}" />
Это работает, но оно многословно и подвержено ошибкам по сравнению с реализацией WPF (много копий и вставок между страницами, и даже элементы управления).
Какова текущая лучшая практика для этой ситуации?