App.xaml.cs CampusAppWP8::App CampusAppWP8 Microsoft::Phone::Controls Microsoft::Phone::Shell System::Diagnostics System::IO::IsolatedStorage System::Threading System::Windows System::Windows::Markup System::Windows::Navigation usingCampusAppWP8.Model.Setting; usingCampusAppWP8.Resources; usingCampusAppWP8.Utility; usingMicrosoft.Phone.Controls; usingMicrosoft.Phone.Shell; usingSystem; usingSystem.Diagnostics; usingSystem.IO.IsolatedStorage; usingSystem.Threading; usingSystem.Windows; usingSystem.Windows.Markup; usingSystem.Windows.Navigation; namespaceCampusAppWP8 { publicpartialclassApp:Application { publicstaticPhoneApplicationFrameRootFrame{get;privateset;} publicApp() { //GlobalerHandlerfürnichtabgefangeneAusnahmen. UnhandledException+=Application_UnhandledException; //Standard-XAML-Initialisierung InitializeComponent(); //Phone-spezifischeInitialisierung InitializePhoneApplication(); //InitialisierungderSprachanzeige InitializeLanguage(); //WährenddesDebuggensProfilerstellungsinformationenzurGrafikleistunganzeigen. if(Debugger.IsAttached) { //ZählerfürdieaktuelleBildrateanzeigen Application.Current.Host.Settings.EnableFrameRateCounter=true; //BereichederAnwendunghervorheben,diemitjedemBildneugezeichnetwerden. //Application.Current.Host.Settings.EnableRedrawRegions=true; //NichtproduktivenVisualisierungsmodusfürdieAnalyseaktivieren, //indemBereicheeinerSeiteangezeigtwerden,diemiteinerFarbüberlagerungandieGPUübergebenwurden. //Application.Current.Host.Settings.EnableCacheVisualization=true; //Verhindert,dassderBildschirmimDebuggerausgeschaltetwird,indem //dieLeerlauferkennungderAnwendungdeaktiviertwird. //Vorsicht:NurimDebugmodusverwenden.EineAnwendungmitdeaktivierterBenutzerleerlauferkennungwirdweiterhinausgeführt //undverbrauchtauchdannAkkuenergie,wennderBenutzerdasHandynichtverwendet. PhoneApplicationService.Current.UserIdleDetectionMode=IdleDetectionMode.Disabled; } } publicstaticvoidSaveToIsolatedStorage<T>(stringkey,Tvalue) { IsolatedStorageSettingsisolatedStore=IsolatedStorageSettings.ApplicationSettings; isolatedStore.Remove(key); if(value!=null) { isolatedStore.Add(key,value); } isolatedStore.Save(); } publicstaticTLoadFromIsolatedStorage<T>(stringkey) { IsolatedStorageSettingsisolatedStore=IsolatedStorageSettings.ApplicationSettings; if(isolatedStore.Contains(key)) { objectvalue=isolatedStore[key]; return(T)value; } returndefault(T); } publicstaticvoidSaveToAppState<T>(stringkey,Tvalue) { IsolatedStorageSettingsisolatedStore=IsolatedStorageSettings.ApplicationSettings; isolatedStore.Remove(key); if(value!=null) { isolatedStore.Add(key,value); } isolatedStore.Save(); } publicstaticTLoadFromAppState<T>(stringkey) { IsolatedStorageSettingsisolatedStore=IsolatedStorageSettings.ApplicationSettings; if(isolatedStore.Contains(key)) { objectvalue=isolatedStore[key]; return(T)value; } returndefault(T); } //Code,derbeimStartenderAnwendungausgeführtwerdensoll(z.B.über"Start") //DieserCodewirdbeimReaktivierenderAnwendungnichtausgeführt privatevoidApplication_Launching(objectsender,LaunchingEventArgse) { this.LoadSettings(); } privatevoidLoadSettings() { this.UserSettingsLoaded(); if(Settings.AppSetting.GeoWatchEnable) { Threadthread=newThread(newThreadStart(Utilities.DetermineAndStoreCurrentPosition)); thread.Start(); } } privatevoidUserSettingsLoaded() { if(Settings.UserProfil==null) { Settings.UserProfil=newUserProfilModel(); } } //Code,derausgeführtwerdensoll,wenndieAnwendungaktiviertwird(indenVordergrundgebrachtwird) //DieserCodewirdbeimerstenStartenderAnwendungnichtausgeführt privatevoidApplication_Activated(objectsender,ActivatedEventArgse) { this.LoadSettings(); } //Code,derausgeführtwerdensoll,wenndieAnwendungdeaktiviertwird(indenHintergrundgebrachtwird) //DieserCodewirdbeimSchließenderAnwendungnichtausgeführt privatevoidApplication_Deactivated(objectsender,DeactivatedEventArgse) { } //Code,derbeimSchließenderAnwendungausgeführtwird(z.B.wennderBenutzerauf"Zurück"klickt) //DieserCodewirdbeimDeaktivierenderAnwendungnichtausgeführt privatevoidApplication_Closing(objectsender,ClosingEventArgse) { //Sicherstellen,dassdererforderlicheAnwendungszustandhierbeibehaltenwird } //Code,derbeieinemNavigationsfehlerausgeführtwird privatevoidRootFrame_NavigationFailed(objectsender,NavigationFailedEventArgse) { if(Debugger.IsAttached) { //Navigationsfehler.UnterbrechenundDebuggeröffnen Debugger.Break(); } } //Code,derbeinichtbehandeltenAusnahmenausgeführtwird privatevoidApplication_UnhandledException(objectsender,ApplicationUnhandledExceptionEventArgse) { if(Debugger.IsAttached) { //EinenichtbehandelteAusnahmeistaufgetreten.UnterbrechenundDebuggeröffnen Debugger.Break(); } } #regionInitialisierungderPhone-Anwendung //DoppelteInitialisierungvermeiden privateboolphoneApplicationInitialized=false; //FügenSiekeinenzusätzlichenCodezudieserMethodehinzu privatevoidInitializePhoneApplication() { if(phoneApplicationInitialized) return; //Frameerstellen,abernochnichtalsRootVisualfestlegen.DadurchkannderBegrüßungsbildschirm //aktivbleiben,bisdieAnwendungbereitfürdasRendernist. RootFrame=newPhoneApplicationFrame(); RootFrame.Navigated+=CompleteInitializePhoneApplication; //Navigationsfehlerbehandeln RootFrame.NavigationFailed+=RootFrame_NavigationFailed; //BehandelnSieRücksetzanforderungenzumLöschendesBackstack RootFrame.Navigated+=CheckForResetNavigation; //Sicherstellen,dasskeineerneuteInitialisierungerfolgt phoneApplicationInitialized=true; } //FügenSiekeinenzusätzlichenCodezudieserMethodehinzu privatevoidCompleteInitializePhoneApplication(objectsender,NavigationEventArgse) { //VisuelleStammkomponentefestlegen,sodassdieAnwendunggerendertwerdenkann if(RootVisual!=RootFrame) RootVisual=RootFrame; //DieserHandlerwirdnichtmehrbenötigtundkannentferntwerden RootFrame.Navigated-=CompleteInitializePhoneApplication; } privatevoidCheckForResetNavigation(objectsender,NavigationEventArgse) { //WenndieAppeine'Reset'-Navigationempfangenhat,müssenwirprüfen //beidernächstenNavigation,umfestzustellen,obderSeitenstapelzurückgesetztwerdenmuss if(e.NavigationMode==NavigationMode.Reset) RootFrame.Navigated+=ClearBackStackAfterReset; } privatevoidClearBackStackAfterReset(objectsender,NavigationEventArgse) { //HebenSiedieRegistrierungdesEreignissesauf,damitesnichterneutaufgerufenwird. RootFrame.Navigated-=ClearBackStackAfterReset; //LöschenSiedenStapelnurbeidenNavigationen"neu"(vorwärts)und"Aktualisieren" if(e.NavigationMode!=NavigationMode.New&&e.NavigationMode!=NavigationMode.Refresh) return; //LöschenSiezurSicherstellungderUI-KonsistenzdengesamtenSeitenstapel while(RootFrame.RemoveBackEntry()!=null) { ;//unternehmenSienichts } } #endregion //InitialisierenSiedieSchriftartundFlussrichtungderAppwieindenlokalisiertenRessourcenzeichenfolgenangegeben. // //Umsicherzustellen,dassdieSchriftartderAnwendungmitdenunterstütztenSprachenabgestimmtistunddass //FlowDirectiondereinzelnenSprachenderherkömmlichenRichtungfolgt,müssenResourceLanguage //undResourceFlowDirectioninjederRESX-Dateiinitialisiertwerden,damitsiedenWerten //derKulturdieserDateientsprechen.ZumBeispiel: // //AppResources.es-ES.resx //DerWertvonResourceLanguagemuss"es-ES"sein. //DerWertvonResourceFlowDirectionmuss"LeftToRight"sein. // //AppResources.ar-SA.resx //DerWertvonResourceLanguagemuss"ar-SA"sein. //DerWertvonResourceFlowDirectionmuss"RightToLeft"sein. // //WeitereInformationenüberdieLokalisierungvonWindowsPhone-AppsfindenSieunterhttp://go.microsoft.com/fwlink/?LinkId=262072. // privatevoidInitializeLanguage() { try { //LegenSiedieSchriftartsofest,dasssiederAnzeigespracheentspricht,die //inderResourceLanguage-RessourcenzeichenfolgedereinzelnenunterstütztenSprachendefiniertist. // //GreifenSieaufdieSchriftartderneutralenSprachezurück,wenndie //AnzeigesprachedesTelefonsnichtunterstütztwird. // //WenneinCompilerfehlerauftritt,fehltResourceLanguagein //derRessourcendatei. RootFrame.Language=XmlLanguage.GetLanguage(AppResources.ResourceLanguage); //LegenSieFlowDirectionallerElementeimStammframefestundzwaraufGrundlage //derResourceFlowDirection-Ressourcenzeichenfolgedereinzelnen //unterstütztenSprachen. // //WenneinCompilerfehlerauftritt,fehltResourceFlowDirectionin //derRessourcendatei. FlowDirectionflow=(FlowDirection)Enum.Parse(typeof(FlowDirection),AppResources.ResourceFlowDirection); RootFrame.FlowDirection=flow; } catch { //TritthiereineAusnahmeauf,liegtdaswahrscheinlichentwederan //ResourceLangaugeistnichtrichtigaufeineunterstützteSpracheeingestellt //CodeoderResourceFlowDirectionistaufeinenanderenWertalsLeftToRightfestgelegt //oderRightToLeft. if(Debugger.IsAttached) { Debugger.Break(); } throw; } } } }