2015-12-16 8 views
7

Ich habe unten Code verwendet, um die Statusleiste in UWP auszublenden. Wenn ich die App im Entwicklungsmodus auf meinem Computer starte, wird die Statusleiste in Windows Phone nicht angezeigt. Ich habe die App im Windows Store bereitgestellt. Nach dem Herunterladen der App sehe ich, dass die Statusleiste in meiner App angezeigt wird.Ausblenden der Statusleiste in UWP

Hier ist mein Code:

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(); 
} 

Die Frage ist, warum der obige Code nicht in Windows Store funktionieren soll? Ich habe auch den Link zu meiner App App link im Windows-Shop, aber wenn ich nach exakten Schlüsselwort im Windows-Store suchen, wird meine Anwendung nicht im Windows-Store angezeigt, aber beim Klicken in Link würde meine App im Fensterladen angezeigt.

Danke!

Antwort

10

Die Überprüfung für die Contract, eher für den Typ StatusBar funktioniert gut für mich.

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

danke, ich habe Ihren Code implementiert und werde nach der Bereitstellung in Windows Store suchen. – ARH

+0

Wo nennen Sie diese Funktion? In App.xaml.cs? oder auf den aktuellen Seiten, die Sie laden? – erotavlas

+0

@erotavlas Hängt von Ihrem Anwendungsfall ab. Wenn Sie die Statusleiste während der gesamten Anwendungslebensdauer ausblenden möchten, rufen Sie sie in der Methode activate/suspend auf. Wenn Sie die Statusleiste während einer bestimmten Seite ausblenden möchten, würden Sie sie während der Ereignishandler "Navigieren zu/von" ausblenden. – Herdo

0

Sie haben FullName zu verwenden, anstatt ToString():

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

Könnte es sein, dass, wenn Sie in Release und mit dem .NET-Muttertoolchain kompilieren, wird die Typinformationen verworfen und so bist du nicht die Saite passieren, von der du glaubst, dass du sie passierst? Vielleicht können Sie versuchen, den vollständigen Typennamen zu codieren?

0

In Windows 10 lautet der Befehl Window.Current.SetTitleBar (null);

1

Dieser Code wird nicht funktionieren, nachdem. NET Native Kompilierung (was Store tut) typeof (StatusBar). ToString() gibt den Namen des Literaltyps nicht wie erwartet zurück, sondern gibt etwas wie "EETypeRVA: 0x00021968" zurück. Verwenden Sie stattdessen eine literale Zeichenfolge (Sie werden StatusBar nicht umbenennen, oder?) Oder verwenden Sie IsApiContractPresent oder typeof (StatusBar). FullName (wie bereits empfohlen). P.S. Das gleiche Problem kann ohne Veröffentlichung reproduziert werden, führen Sie es einfach mit Release-Konfiguration.