2015-07-23 11 views
7

Sto cercando di nascondere la barra di stato nella mia app per Windows 10 Universal. In WP 8.1, stavo usando StatusBar.GetForCurrentView().HideAsync(); per nascondere la barra di stato, tuttavia questo non funzionerà nel mio progetto corrente (Monogame, Win10 UAP) - Ricevo l'errore "StatusBar non trovato nel contesto corrente" (sì, sto usando Windows .UI.ViewManagement). Sto facendo qualcosa di sbagliato, o questa opzione per rimuovere StatusBar è stata rimossa? Come dovrei farlo in W10M? Grazie in anticipo.Windows 10 Mobile: impossibile nascondere la barra di stato (StatusBar non esiste nel contesto)

risposta

20

Il trucco è che devi prima aggiungere un riferimento a Microsoft Mobile Extension SDK. Quindi il codice è il seguente:

StatusBar statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView(); 
await statusBar.HideAsync(); 

Il riferimento può essere aggiunto facendo clic destro del progetto universale. Seleziona "Aggiungi riferimento". Nella finestra di dialogo Gestione riferimenti selezionare "Windows universale" a sinistra. Scegli "Estensioni" e controlla "Microsoft Mobile Extension SDK ...".

Select the Extension SDK in the Reference Manager

Poiché si tratta di un'applicazione universale, esso verrà eseguito su tutti i dispositivi, ma l'API sarà disponibile solo su dispositivi mobili (aka Phones) con Windows 10. Quindi di funzionalità rilevare se questa API è disponibile all'indirizzo runtime prima di chiamare effettivamente l'API. Altrimenti verrà lanciata una TypeLoadException in fase di runtime.

Utilizzare lo spazio dei nomi Windows.Foundation.Metadata.ApiInformation per scoprire se l'API è disponibile. (Eg Metodo IsTypePresent() vi consiglio di lavorare con typeof invece di stringhe qui, ad esempio, in questo modo:.

var isStatusBarPresent = ApiInformation.IsTypePresent(typeof(StatusBar).ToString()); 

Ulteriori informazioni sul codice adattivo qui: https://channel9.msdn.com/Series/A-Developers-Guide-to-Windows-10/08

+0

opere, grazie !. – kubci98

+0

questo non funziona almeno con la versione recente di SDK, poiché dopo .Net Native compilation typeof (StatusBar) non restituirà il nome del tipo letterale come previsto. –

+0

Sarebbe "typeof (StatusBar) .FullName" essere una soluzione migliore? – Richardissimo

Problemi correlati