Как перезагрузить все локализованные строки в окне WPF? - PullRequest
1 голос
/ 18 октября 2011

У меня есть окно WPF, и многие метки используют локализованные строки. Например:

<Window x:Class="CoHOLauncher.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:s="clr-namespace:System;assembly=mscorlib"
        xmlns:l="clr-namespace:MyNameSpace"
        xmlns:loc="clr-namespace:MyNameSpace.Localization">

<Label Grid.Column="0" Content="{x:Static loc:Strings.MainWindowSize}" HorizontalAlignment="Right"/>

Подробности класса Strings:

public class Strings {
        private static global::System.Globalization.CultureInfo resourceCulture;
        public static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MyNameSpace.Localization.Strings", typeof(Strings).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }

    public static global::System.Globalization.CultureInfo Culture {
        get {
            return resourceCulture;
        }
        set {
            resourceCulture = value;
        }
    }

        public static string MainWindowSize {
            get {
                return ResourceManager.GetString("MainWindowSize", resourceCulture);
            }
        }
}

Если я изменил Strings.Culture во время выполнения, как заставить WPF перезагрузить все строки?

Я храню все строки в сборках DLL сателлитной локализации, которые генерируются из локализованных файлов ресурсов.

1 Ответ

2 голосов
/ 18 октября 2011

Вам придется изменить источник привязки со значения x:Static и каким-то образом предоставить локализованные строки через свойство, которое предоставляет уведомления об изменении значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...