2015-12-16 82 views
7

以下のコードを使用して、UWPのステータスバーを非表示にしています。コンピュータの開発モードでアプリケーションを実行すると、ステータスバーはWindowsの電話機に表示されません。私はWindows Storeでアプリをデプロイしました。アプリをダウンロードした後、私のアプリにステータスバーが表示されます。ここでUWPのステータスバーを非表示にする

は私のコードです:上記のコードは、Windowsストアでは動作しない理由

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

質問は、ありますか? また、私のアプリケーションにはApp linkへのリンクがありますが、Windowsストアの正確なキーワードを検索すると、私のアプリケーションはWindowsストアには表示されませんが、リンクをクリックするとウィンドウストアにアプリが表示されます。

ありがとうございます!

答えて

10

StatusBarの代わりにContractを確認すると、問題なく機能します。あなたはToString()の代わりにFullNameを使用する必要が

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

ありがとう、私はあなたのコードを実装し、Windowsストアへの配備を探しています。 – ARH

+0

ここでこの関数を呼び出しますか? App.xaml.csでは?読み込んだ実際のページに表示されますか? – erotavlas

+0

@erotavlasあなたのユースケースによって異なります。アプリケーション全体のライフタイム中にステータスバーを非表示にするには、activate/suspendメソッドでステータスバーを呼び出します。特定のページでステータスバーを非表示にしたい場合は、ナビゲート先/イベントハンドラ中にステータスバーを非表示にします。 – Herdo

0

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

を、それはあなたがリリースにと.NETネイティブツールチェーンを使用してコンパイルする場合、型情報は破棄されますので、あなたがしていることだろうあなたが渡していると思っている文字列を渡さない?たぶんあなたは完全な型名をハードコーディングすることができますか?

0

Windows 10では、コマンドは です。Window.Current.SetTitleBar(null);

1

.Netネイティブコンパイル(Storeが行う)、typeof(StatusBar)の後になるため、このコードは機能しません。 ToString()は、期待通りにリテラルタイプ名を返しませんが、 "EETypeRVA:0x00021968"のようなものを返します。代わりにリテラル文字列を使用してください(あなたはStatusBarの名前を変更しません)、IsApiContractPresentまたはtypeof(StatusBar)を使用してください。 フルネーム(すでにアドバイス済み) P.P.同じ問題を公開せずに再現することができます。リリース構成を使用して実行するだけです。

関連する問題