none
Comment désactiver l'Appbar selon le contexte? RRS feed

  • Question

  • Hello everybody!

    J'ai développé quelques pages en C#/XAML (sur un ordinateur non tactile) et je souhaite désactiver/activer un Appbar d'une page.

    Dans cette page, il y a plusieurs types de contenus différents (cela dépend du contexte et de la navigation) et l'Appbar doit être actif ou non selon le type du contenu.

    J'ai pensé à utiliser la propriété Visibility

    <AppBar Visibility="{Binding IsAppVisible,Converter={StaticResource BooleanToVisibilityConverter}}">

    IsAppVisible est défini dans le code C# et cela marche bien mais il y a un bug: quand je navigue vers la page contenant l'Appbar et le type du contenu n'autorise pas l'Appbar:

    1. je clique droit (l'Appbar ne s'affiche pas: normal car IsAppVisible = false)
    2. puis je clique sur le bouton de retour: aucun effet (à mon avis, l'appbar se désactive)
    3. ensuite je clique une deuxième fois sur le bouton de retour: cela agit.

    Vu les actions effectuées, je pense que l'Appbar s'active tout de même. Ce que j'essaie de faire, c'est de désactiver cet AppBar pour ce type du contenu et cliquer une seule fois sur le bouton de retour (au lieu de deux fois).

    Comment faire?

    Si jamais ce n'est pas clair ou manque de précision, n'hésitez pas à me le demander!

    F2O


    • Modifié F2O lundi 22 juillet 2013 12:57 Oubli d'une précision
    lundi 22 juillet 2013 12:56

Réponses

  • J'ai trouvé une solution!

    J'ai ajouté un événement Opened dans AppBar:

    Dans la pageA.xaml : 

    <AppBar x:Name="AppBar_Button" Opened="AppBar_Opened" Visibility="{Binding IsAppVisible,Converter={StaticResource BooleanToVisibilityConverter}}">

    ...

    Puis dans la pageA.xaml.cs:

            private void AppBar_Opened(object sender, object e)
            {
                var content = ViewModelLocator.CurrentInstance.PageAVm;
                if (content.IsAppVisible == false)
                {
                    AppBar_Button.IsOpen = false;
                }
                else
                {
                    AppBar_Button.IsOpen = true;
                }            
            }

    Dans la classe de la pageAVm, isAppVisible est un attribut. En gros, si l'Appbar est invisible, il reste fermé sinon il s'ouvre.

    Avec cette solution, ça a l'air de marcher correctement. 

    En tout cas, merci beaucoup quand même pour l'aide que t'as apporté, Aurel!




    • Modifié F2O jeudi 25 juillet 2013 08:34 recorrection
    • Marqué comme réponse Aurel Bera jeudi 25 juillet 2013 08:50
    jeudi 25 juillet 2013 08:32

Toutes les réponses