Изменить CurrentUICulture во время выполнения - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть приложение WPF, которое поддерживает несколько языков.

Я видел этот ответ на вопрос Лучший способ реализовать многоязычный (с использованием файлов .resx) здесь, в Stackoverflow. Все прекрасно работает, за исключением того, что язык не меняется во время выполнения.

Я видел этот ответ на вопрос Как изменить CurrentUICulture во время выполнения здесь, на Stackoverflow, но, к сожалению, его ответ не меняется помогите мне, потому что ссылка, которую он разместил в своем решении, не работает.

Я видел много статей в Google, но безуспешно.

Небольшая моя попытка ( .cs ):

private void EventSetter_OnHandler(object sender, MouseButtonEventArgs e)
{
    string item = ((ComboBoxItem)sender).Content.ToString();

    switch (item)
    {
        case "English":
            Console.WriteLine("English");
            System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-GB");
            System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-GB");
            Product.Language.Resources.Culture = new System.Globalization.CultureInfo("en-GB");
            break;

        case "German":
            Product.Language.Resources.Culture = new System.Globalization.CultureInfo("de-DE");
            Console.WriteLine("German");
            break;

        default:
            Console.WriteLine("none");
            break;
    }
}

XAML:

<Grid>
        <StackPanel>
            <Label x:Name="LabelHeader1" Content="{x:Static language1:Resources.LanguageTL}" />
            <Label x:Name="LabelHeader2" Content="{x:Static language1:Resources.HomeTL}" />
            <Label x:Name="LabelHeader3" Content="{x:Static language1:Resources.SkyTL}" />
            <ComboBox x:Name="Languages">
                <ComboBoxItem IsSelected="True">English</ComboBoxItem>
                <ComboBoxItem>German</ComboBoxItem>
                <ComboBox.ItemContainerStyle>
                    <Style>
                        <EventSetter Event="ComboBox.PreviewMouseDown" Handler="EventSetter_OnHandler" />
                    </Style>
                </ComboBox.ItemContainerStyle>
            </ComboBox>
        </StackPanel>

    </Grid>

Ключи сохраняются в .resx файлах:

.resx file screenshot

И спасибо за помощь

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