У меня есть приложение, которое изменяет интерфейс во время выполнения. Вот мой код для изменения языка:Изменение UWW CalendarDatePicker language во время выполнения
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 Update - бесполезно. Любые предложения о том, как добиться нормального изменения языка?
EDIT:
Благодаря Элвис Ся, были замечены, что на изменение языка в коде, размер CalendarView получает ввинчивается, потому что, если я это сделать:
this.calendar.Language = "ru-RU"
this.calendar.Height = 500;
this.calendar.Width = 500;
я доберусь чтобы увидеть даты (с резьбой, но все же):
Любые идеи, как это исправить?
Со второго изображения, вы имеете в виду язык изменился, но есть что-то не так с размером календарного выпадающей? –
@ ElvisXia-MSFT Я не могу сказать, что это проблема размера. Похоже, что дата не была оказана - или, может быть, вы правы, и размер сломался. Но почему, если я изменил только язык, а не день недели - даты должны оставаться неизменными (теоретически) – Cheese
@ ElvisXia-MSFT, вы были правы, что-то странное происходит с размером вылета – Cheese