11
votes

Comment désactiver Windows 8 / WinRT AppBar?

Mon objectif est de disposer d'une application AppBar disponible sous une certaine circonstance. Je tente de l'accomplir en créant une AppBar, mais je le laissant handicapé jusqu'à ce que cette circonstance se présente. Toutefois, si vous définissez l'attribut iSeenabled sur une armbar à false , lorsque vous lancez votre application et cliquez avec le bouton droit de la souris (qui opença généralement l'AppBar), l'application se bloque. Est-ce un bug dans le cadre? Quelle est la bonne façon de désactiver une application AppBar?

Edit: Il se produit également lorsque vous définissez la visibilité sur effondré .

Plus d'infos: Je l'exécute via le débogueur Visual Studio, mais une fenêtre distincte "Visual Studio Just-Studio Just-Studio" est apparue avec le message "Une exception Win32 non gagnée survenue dans App.exe [2596]. " Une boîte d'avertissement apparaît sur celle-ci qui dit "Un débogger est attaché à app.exe mais non configuré pour déboguer cette exception non gérée. Pour déboguer cette exception, détachez le débogueur actuel."

EDIT 2: Ce n'est pas seulement mon code. Il se bloque également si vous n'éjoutez que isenabled = "false" dans l'AppBar dans l'exemple d'exemple d'exemple AppBarControl de Microsoft (trouvé ici: HTPTP://code.msdn.microsoft.com/windowsapps/xaml-appbar-control-sample-2AA1CBB4 )

Edit 3: @g. Andrew Duthie - Devhammer a fourni la réponse que j'utilise. Je voulais juste ajouter que j'ai constaté qu'il est préférable d'utiliser this.bottomappbar = null pour le désactiver, par opposition à la définition de la visibilité de code ou > Propriétés. Si vous venez de définir visibilité sur effondré , puis lorsque vous cliquez avec le bouton droit de la souris, l'application pense toujours à une application d'application est présente même s'il n'est pas visible, alors votre prochain clic régulier sera interprété comme le clic qui rejette généralement l'AppBar, vous devrez donc cliquer sur une seconde fois pour effectuer l'action que vous tenez.


5 commentaires

Que signifie "l'application qui se bloque"? Est-ce qu'il plante dans le cadre? Dans votre code? Avez-vous un appels de piqûre? Est une exception projetée? Quelle est l'exception (et le message)?


Je pense que cela se bloque dans le cadre. Je l'exécute à travers le débogueur Visual Studio, mais une fenêtre distincte "Visual Studio Just-Studio Just-Studio" est apparue avec le message "Une exception Win32 non heurtée survenue dans App.exe [2596]." Une boîte d'avertissement apparaît sur celle-ci qui dit "Un débogueur est attaché à app.exe mais non configuré pour déboguer cette exception non gérée. Pour déboguer cette exception, détachez le débogueur actuel."


Je pense que nous avons besoin de plus de contexte pour repérer le problème. Pouvez-vous publier votre AppBar xaml?


Vous pouvez attendre quelques jours et voir si la version de version de Windows 8 jette une exception aussi


@mydogisbox Ce n'est pas seulement mon code. Il se bloque également si vous n'éjoutez que isenabled = "false" dans l'AppBar dans l'exemple d'exemple d'exemple AppBarControl de Microsoft (trouvé ici: code.msdn.microsoft.com/windowsapps/.../a>)


5 Réponses :


2
votes

Vous pouvez utiliser la CustomApparbar à partir du Toolkit WinRT XAML . Il peut être désactivé de plusieurs façons - vous pouvez lier ses propriétés Canopen ou Candismiss pour le bloquer de l'apparition ou de partir, ce qui pourrait être ce que vous voulez.


2 commentaires

Bien sûr que ça fait. Il souhaitait que l'AppBar fonctionne ou ne fonctionne pas selon les conditions et la CustomAppar fournit juste cela et ne se bloque pas. Je l'ai créé avec précision en raison des limitations de / des problèmes avec l'Appbar natif.


Merci beaucoup pour votre suggestion, @Filip Skakun. Si je n'ai pas pu obtenir la solution G. Andrew Duthie - Devhammer a fourni au travail, j'aurais certainement partie de cette route. Je reviendrai avec votre bibliothèque la prochaine fois que je rencontre un problème comme celui-ci.



8
votes

Je joue avec ceci pour un peu (en utilisant les deux isenabled, ainsi que de définir la propriété de visibilité à la visibilité.Collapté), et la seule façon de désactiver avec succès l'AppBar sans élever l'exception était d'afficher l'APPBAR. premier. Une fois que l'AppBar a affiché, le réglage isenabled sur FALSE ou la visibilité de la visibilité. Collabiled ne jette plus l'exception.

Cependant, si vous créez la barre d'application par programme, comme: P>

private void Button_Click_1(object sender, RoutedEventArgs e)
{
    if (this.BottomAppBar == null)
    {
        this.BottomAppBar = myAppBar;
    }
    else {
        this.BottomAppBar = null;
    }
}


3 commentaires

Cela fonctionne parfaitement. Merci! J'ai constaté qu'il est préférable d'utiliser this.bottomappbar = null pour le désactiver par opposition à la définition de la visibilité isenabled visibilité . Si vous venez de définir visibilité sur effondré , puis lorsque vous cliquez avec le bouton droit de la souris, l'application pense toujours à une application d'application est présente même s'il n'est pas visible, alors votre prochain clic régulier Sera interprété comme le clic qui élimine généralement l'AppBar, vous devrez donc cliquer sur une seconde fois pour réellement effectuer l'action que vous teniez. Merci encore pour votre aide!


Mon plaisir. Heureux d'avoir pu aider.


Tenter de charger un objet de ressource Appbar défini dans un fichier XAML échoue. Cependant, j'ai réussi à utiliser simplement du code brut sans aucune ressource XAML.



4
votes

Si vous souhaitez toujours vouloir définir votre AppBar dans XAML, vous pouvez fermer programmatiquement l'AppBar dans le code derrière. Dans XAML, créez la barre d'appbre inférieure: xxx

puis, dans le code C # derrière: xxx

Vous devrez mettre en œuvre votre propre Vérifiez "Canappbaropen ()"


0 commentaires

2
votes

Vous pouvez faire comme ça en manipulant OUVERTÉ STRAND> ONUX STRAND> APPBAR STRAND>

IN XAML: P>

 private void bottomappbar_opened_event(object sender, object e)
 {
     if (!this.BottomAppBar.IsEnabled)
     {
         if (this.BottomAppBar.IsOpen)
         this.BottomAppBar.IsOpen = false;
     }
 }


0 commentaires

0
votes

1. Ajouter une sélection Événement modifié à votre contrôle Flipview dans le fichier XAML: strong> xxx pré>

2. Ajoutez cette variable de membre de classe à votre fichier XAML code-derrière-derrière: strong> p> xxx pré>

3. Implémentez la sélection de FlipView Change Handler ici: strong> p> xxx pré>

  1. Ajoutez ces méthodes: P>

    vide privé buildpageAppAcAppAbardindiction () { _AppBardindical.clear (); p>

                page.TopAppBar = null;
                page.BottomAppBar = null;
            }
        }
    }
    


1 commentaires

Les balles de la liste de mélange et le code ne fonctionnent pas bien (avait le même problème lorsque vous commencez à poster ici :-)