windows-10 - tutorial - uwp vs wpf
Ocultar barra de estado en UWP (5)
He usado el código siguiente para ocultar la barra de estado en UWP. Cuando ejecuto la aplicación en modo de desarrollo en mi computadora, la barra de estado no se muestra en el teléfono de Windows. Implementé la aplicación en Windows Store, luego de descargar la aplicación, veo que la barra de estado aparece en mi aplicación.
Aquí está mi código:
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 pregunta es, ¿por qué el código anterior no debería funcionar en Windows Store? Además, tengo el enlace al enlace de mi aplicación en Windows Store, pero cuando busco la palabra clave exacta en Windows Store, mi aplicación no se muestra en Windows Store, pero al hacer clic en el vínculo aparecería mi aplicación en la tienda de Windows.
¡Gracias!
Tienes que usar FullName
lugar de ToString()
:
...
ApiInformation.IsTypePresent(typeof(StatusBar).FullName);
...
¿Podría ser que al compilar en Release y con la cadena de herramientas .NET Native, la información de tipo se descarta y por lo tanto no está pasando la cadena que cree que está pasando? ¿Tal vez puede intentar codificar el nombre completo?
En Windows 10, el comando es Window.Current.SetTitleBar (null);
Este código no funcionará porque después de la compilación .Net Native (que Store hace) typeof (StatusBar). ToString () no devolverá el nombre de tipo literal como espera, pero devolverá algo como "EETypeRVA: 0x00021968". Use una cadena literal en su lugar (no va a cambiar el nombre de la Barra de estado, ¿verdad?;) O use IsApiContractPresent o typeof (StatusBar). FullName (como ya se informó). PD: el mismo problema se puede reproducir sin publicar, simplemente ejecútelo usando la configuración de lanzamiento.
Verificar el Contract
, más bien para el tipo StatusBar
funciona bien para mí.
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();
}
}