Декларативная поддержка ресурсов в приложениях для Windows Phone 7

Сейчас Windows Phone 7 доступен в ограниченном списке стран, однако придет день, когда Windows Phone будет приманивать сиянием своего экрана пользователей всего мира. К этому моменту разработчикам приложений нужно хорошо подготовиться и сделать приложения готовыми для локализации. Кроме того, иметь все используемые в приложении строки в одном месте удобно и с точки зрения поддержки и обновления приложения.

Для декларативной привязки строковых значений из ресурсов, нужно выполнить следующие шаги:

1. Создать класс, который будет предоставлять доступ к ресурсам. В примере ниже класс используется для доступа к двум ресурсным файлам MainResources.resx и OtherResources.resx. Не стоит забывать, что модификатор доступа к ресурсам в самих resx файлах должен быть выставлен Public.

namespace MyAppNamespace
{
    public class ResourceStrings
    {
        private static MainResources _res = new MainResources();
        private static OtherResources _res = new OtherResources();
        public MainResources Strings { get { return _res; } }
        public OtherResources OtherStrings { get { return _res; } }
    }
}

2. Зарегистрировать созданный ранее класс в ресурсах XAML приложения (App.xaml)

<Application.Resources>
    <local:ResourceStrings xmlns:local ="clr-namespace:MyAppNamespace" x:Key="ResourceStrings" />
</Application.Resources>

3. На страницах приложения вместо строк испольовать связки с ресурсами, например

<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
    <TextBlock x:Name="ApplicationTitle" Text=" {Binding Path=Strings.ApplicationTitle, Source={StaticResource ResourceStrings}} " Style="{StaticResource PhoneTextNormalStyle}"/>
    <TextBlock x:Name="PageTitle" Text=" {Binding Path=Strings.Settings, Source={StaticResource ResourceStrings}} " Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>

Это все. Удачного программирования и всемирной славы вашим приложениям!