2015-12-16 18 views
7

Ho usato sotto il codice per nascondere la barra di stato in UWP. Quando eseguo l'app in modalità di sviluppo sul mio computer, la barra di stato non viene visualizzata in Windows Phone. Ho distribuito l'app in Windows Store, dopo aver scaricato l'app, vedo la barra di stato visualizzata nella mia app.Nascondi barra di stato in UWP

Ecco il mio codice:

var isAvailable = Windows.Foundation.Metadata.ApiInformation.IsTypePresent(typeof(StatusBar).ToString()); 
    if (isAvailable) 
     hideBar(); 

async void hideBar() 
{ 
    StatusBar bar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView(); 
    await bar.HideAsync(); 
} 

la domanda è, perché il codice di cui sopra non dovrebbe funzionare in Windows negozio? Inoltre, ho il link alla mia app App link nell'archivio di Windows, ma quando cerco la parola chiave esatta in Windows Store, la mia applicazione non viene mostrata nell'archivio di Windows, ma facendo clic sul link appare la mia app in window store.

Grazie!

risposta

10

Il controllo per Contract, piuttosto per il tipo StatusBar funziona correttamente per me.

private async Task InitializeUi() 
{ 
    // If we have a phone contract, hide the status bar 
    if (ApiInformation.IsApiContractPresent("Windows.Phone.PhoneContract", 1, 0)) 
    { 
     var statusBar = StatusBar.GetForCurrentView(); 
     await statusBar.HideAsync(); 
    } 
} 
+0

grazie, ho implementato il codice e mi occuperò della distribuzione in Windows Store. – ARH

+0

dove chiami questa funzione? In App.xaml.cs? o sulle pagine effettive che carichi? – erotavlas

+0

@erotavlas Dipende dal caso d'uso. Se si desidera nascondere la barra di stato durante l'intera durata dell'applicazione, è necessario chiamarla nel metodo di attivazione/sospensione. Se si desidera nascondere la barra di stato durante una pagina specifica, la si nasconderà durante la navigazione da/verso i gestori di eventi. – Herdo

0

Devi usare FullName invece di ToString():

... 
ApiInformation.IsTypePresent(typeof(StatusBar).FullName); 
... 
1

Potrebbe essere che quando si compila in uscita e con la toolchain nativo NET, il tipo di informazioni viene scartato e così sei non passando la stringa pensi di passare? Forse puoi provare a codificare a fondo il nome completo del tipo?

0

In Windows 10 il comando è Window.Current.SetTitleBar (null);

1

Questo codice non funziona perché dopo la compilazione nativa .Net (che Store fa) typeof (StatusBar). ToString() non restituirà il nome del tipo letterale come previsto, ma restituirà qualcosa come "EETypeRVA: 0x00021968". Usa invece una stringa letterale (non intendi rinominare StatusBar, giusto?;) O usa IsApiContractPresent o typeof (StatusBar). FullName (come già consigliato). P.S. Lo stesso problema può essere riprodotto senza pubblicazione, basta eseguirlo utilizzando la configurazione di rilascio.

Problemi correlati