2010-11-20 4 views
13

J'ai une application Windows Phone 7 intégrée dans Silverlight. Cette application utilise la barre d'application. Si l'a acheté l'application, je veux cacher l'un des boutons dans la barre d'application. Cependant, j'ai remarqué que la classe ApplicationIconButton n'expose pas une propriété "Visibility". En même temps, je n'ai pas vu un moyen de remplir dynamiquement la barre d'applications à l'exécution.Masquer l'icône de la barre d'application par programme dans une application WP7 Silverlight?

Quelqu'un peut-il donner un aperçu de ceci? Est-ce possible? Si c'est le cas, comment?

Merci!

Répondre

32

Les boutons de la barre d'applications fonctionnent sur la base d'index plutôt que sur des objets, comme vous pouvez vous y attendre. Par conséquent, vous devez spécifier un index de bouton chaque fois que vous souhaitez effectuer une action spécifique sur celui-ci (par exemple, désactiver).

Par exemple:

ApplicationBarIconButton b = (ApplicationBarIconButton)ApplicationBar.Buttons[0]; 
b.IsEnabled = false; 

Cela dit, vous pouvez créer de nouvelles instances de ApplicationBarIconButton et de les transmettre à ApplicationBar:

for (int i = 0; i < 2; i++) 
{ 
    ApplicationBarIconButton b = new ApplicationBarIconButton(); 
    b.Text = i.ToString(); 
    b.IconUri = new Uri("/Images/icon1.png", UriKind.Relative); 
    ApplicationBar.Buttons.Add(b); 
} 

Lors de la suppression des boutons, vous pouvez simplement utiliser RemoveAt, étant donné que vous connaître l'index du bouton à supprimer:

ApplicationBar.Buttons.RemoveAt(0); 
13

J'utilise la méthode suivante pour modifier les boutons de la barre d'application dans mon code:

private void UpdateAppbarButton(int index, string uriString, string text, bool visibility, EventHandler handler) 
{ 
    ApplicationBarIconButton button1 = null; 

    if (ApplicationBar.Buttons.Count > index) 
    { 
     button1 = ApplicationBar.Buttons[index] as ApplicationBarIconButton; 
    } 

    if (button1 != null) 
    { 
     { 
      ApplicationBar.Buttons.Remove(button1); 
     } 
    } 
    if (visibility == true) 
    { 
     button1 = new ApplicationBarIconButton(new Uri(uriString, UriKind.Relative)); 
     button1.Text = text; 
     button1.Click += handler; 
     ApplicationBar.Buttons.Insert(index, button1); 
    } 
} 

Le uriString est le chemin par rapport à l'icône que je souhaite afficher sur le bouton de l'application. Vous pouvez probablement adapter ce code pour vos propres scénarios. Essentiellement, au lieu de définir un bouton visible ou non, vous devez supprimer le bouton (s'il existe) ou le rajouter s'il ne l'est pas.

+0

Je dois donner le IconUri pour Appl icationBarIconButton comme URL http. Est-ce possible? Je reçois l'exception ci-dessous. "Le chemin ne peut pas être absolu". – Sujiz

+0

Salut Sujiz, Avez-vous défini le paramètre UriKind pour être absolu? Bien que je ne sache pas si les adresses HTTP fonctionneront ou non, cela vaut la peine d'essayer rapidement. –

+0

J'ai mis le UriKind à l'absolu mais cela n'a pas fonctionné pour moi. Y at-il une autre solution pour charger l'icône de barre d'application de l'url de HTTP? – Sujiz

Questions connexes