Niestety tak jak wspomniałem w pierwszym poście, odświeżam apkę przeładowując MainPage, by wszystkie zmienne się załadowały ponownie, a co za tym idzie InitializeComponent dla MainPage wywołuje się automatycznie. Próbowałem też wywołać InitializeComponent klasy App, ale nic się nie zmienia.
Robię to tak:
Ustawienia:
private void CBSelectLanguage_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
switch (CBSelectLanguage.SelectedIndex)
{
case 0:
App.ChangeLanguage.Change("en");
SettingsMenagement.SetSettings("Language", "en", true);
break;
case 1:
App.ChangeLanguage.Change("pl");
SettingsMenagement.SetSettings("Language", "pl", true);
break;
}
var parentFrame = Window.Current.Content as Frame;
parentFrame.Navigate(typeof(MainPage));
}
catch (Exception ex)
{
MessageBoxHelper.DisplayErrorWithReportAsync(ex).ConfigureAwait(false);
}
}
Klasa App
public static LanguageChange ChangeLanguage;
/// <summary>
/// Inicjuje pojedynczy obiekt aplikacji. Jest to pierwszy wiersz napisanego kodu
/// wykonywanego i jest logicznym odpowiednikiem metod main() lub WinMain().
/// </summary>
public App()
{
this.InitializeComponent();
this.Suspending += OnSuspending;
ChangeLanguage = new LanguageChange();
ChangeLanguage.LanguageChanged += OnLanguageChange;
}
private void OnLanguageChange(object sender, EventArgs e)
{
LanguageChangeArgs languageChangeArgs = e as LanguageChangeArgs;
ApplicationLanguages.PrimaryLanguageOverride = languageChangeArgs.LanguageCode;
}
W tej ostatniej wrzuciłem InitializeComponent i nic. Pokombinuję jeszcze, ale wygląda na to, że szybciej będzie związać nowe zmienne językowe pod te kontrolki i po kłopocie.