UWP меняет язык CalendarDatePicker во время выполнения
У меня есть приложение, которое меняет интерфейс во время выполнения. Вот мой код для смены языка:
public void SwitchLanguage(SupportedLanguage language)
{
// Check if passed argument is different from current language
if (CurrentLanguage != language.Type)
{
// Set the new current language
CurrentLanguage = language.Type;
// Override tha application primary language ( it will automatically save the language preference )
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = language.FourDigitCode;
ResourceContext.GetForViewIndependentUse().Reset();
ResourceContext.GetForCurrentView();
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("LocalizedResourceMap"));
// Notify code about the changes
this.LanguageChanged?.Invoke(this, new EventArgs());
}
}
Вся локализация работает нормально, кроме CalendarDatePicker - это Flyout не локализуется (во время выполнения, когда я перезапускаю приложение - все в порядке).
Вот примеры
Открыл страницу и выбрал CalendarDatePicker:
Переключил язык на русский:
Я пытался сделать это:
// Attach to LanguageChanged event - created in my own code
// And trigger this method inside CalendarDatePicker:
private void LanguageChanged(object sender, EventArgs e)
{
this.Language = "ru-RU"; // Hardcoded value for test only
}
И результат такой:
Я также пытался сделать недействительной () все. Также пытался вызвать метод обновления TemplateChild CalendarView - бесполезно. Любые предложения, как добиться нормальной смены языка?
РЕДАКТИРОВАТЬ:
Благодаря Элвису Ся было замечено, что при смене языка в коде размер CalendarView искажается, потому что если я сделаю это:
this.calendar.Language = "ru-RU"
this.calendar.Height = 500;
this.calendar.Width = 500;
Я буду видеть даты (облажался, но все же):
Любые идеи, как это исправить?