Я изучаю локализацию интерфейса и использую WPF в Visual Studio 2008. Моя цель для моей программы - сделать так, чтобы пользователь мог нажать кнопку и изменить отображаемый язык в окне. Я пытаюсь изменить файлы ресурсов во время выполнения в разделе кода, когда пользователь нажимает кнопку.Изменение файла ресурсов в коде C# позади в событии click
Я прочитал этот вопрос: Programmatically change resource file language (resx) in Code Behind
Однако, это не кажется, что это решение для меня, потому что я хочу сделать выше изменения на событие нажатия кнопки. Когда я пытаюсь сделать это, кажется, что я не могу использовать это решение, потому что защищенная функция из другого вопроса не может войти в событие действия.
Вот что я пытался не повезло, исходя от предыдущего вопроса:
/// Change to English-US
private void Button2_Click(object sender, RoutedEventArgs e)
{
protected override void InitializeCulture()
{
base.InitializeCulture();
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
}
}
/// Change to German
private void Button3_Click(object sender, RoutedEventArgs e)
{
protected override void InitializeCulture()
{
base.InitializeCulture();
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE");
}
}
Я программирования в школе, и на моей в течение нескольких лет, так что я m не абсолютное noobie. Однако я новичок в C# и WPF, с которыми я сейчас работаю. Из того, что я знаю, вы не можете иметь функцию внутри функции, как в моем коде. Единственная причина, по которой я это сказал, - это то, что мне нужно, чтобы она работала с событием нажатия кнопки.
Помощь с этим была бы весьма признательна.
Вот новый код:
namespace LocalizationConcept
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
Properties.Resources.Culture = new CultureInfo(ConfigurationManager.AppSettings["Culture"]);
///InitializeComponent();
}
/// Exit Button
private void button1_Click(object sender, RoutedEventArgs e)
{
System.Environment.Exit(0);
}
private void ChangeCulture(string cultureKey)
{
try
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureKey);
}
catch (Exception err)
{
System.Environment.Exit(0);
}
}
private void Button2_Click(object sender, RoutedEventArgs e)
{
ChangeCulture("en-US");
}
private void Button3_Click(object sender, RoutedEventArgs e)
{
ChangeCulture("de-DE");
}
}
}
Я полностью удалил события нажатия кнопок, которые у меня были до этого, и ввел это. У компилятора не было проблем, но язык не меняется при нажатии кнопки. Я отправлю новый код. -It также может быть важно отметить, что у меня есть файл app.config, который я использовал для изменения языка, прежде чем запускать программу. –
Я только что добавил ссылку на аналогичный пост, который имеет отличный ответ для этого, хотя и немного более сложный. –
Я пытаюсь локализовать весь текст в моем интерфейсе. Текст на кнопках, текстовых полях и вкладках. Будет ли эта связь работать и для этих? Единственная причина, по которой я спрашиваю, состоит в том, что они всегда кодируют строки в окне XAML в качестве примера. –