Publié mercredi 3 mars 2010 23:50 par Audrey

[WPF] Contrôler son application depuis la taskbar de Windows 7 avec de simples boutons

Avec WPF 4, il est désormais possible de personnaliser le comportement de la taskbar ou barre des tâches lorsque votre application est en cours d'exécution.

Dans la MSDN, on trouve cette image décrivant très bien les différents éléments de l'aperçu d'une application dans la taskbar :

taskbar

Pour personnaliser la plupart de ces éléments, il faut rajouter tout d'abord dans le code XAML de votre interface le code suivant :

1
2
3
4
5
<Window.TaskbarItemInfo>
<TaskbarItemInfo>

</TaskbarItemInfo>
</Window.TaskbarItemInfo>

TaskbarItemInfo est l'élément qui va nous permettre d'accéder à toutes les propriétés concernant notre application dans la taskbar. Voici les propriétés proposées :

TaskbarItemInfo

Et ce que l'on peut obtenir avec ces propriétés :
  • Description : pour changer la description de l'application.
  • Overlay : pour ajouter une image dans l'icône présente dans la barre des tâches.
  • ProgressState : pour changer l'état de la barre de progression.
  • ProgressValue : pour donner une valeur à l'avancé de la barre de progression.
  • ThumbButtonInfos : pour ajouter des boutons.
  • ThumbnailClipMargin : pour modifier les marges de la miniature dans l'aperçu de l'application.

Aujourd'hui nous allons nous concentrer sur les boutons. On souhaite pouvoir contrôler l'application depuis trois boutons présents dans l'aperçu de l'application de la barre des tâches. Voici l'exemple que l'on cherche à avoir (pour ceux qui étaient présents à la session Coding for Fun des Techdays 2010, Mitsu pouvait jouer avec son Tetris grâce à des boutons dans l'aperçu Smile) :

ButtonTaskbar

L'application est composée de deux boutons, permettant chacun d'afficher un message via un MessageBox. On souhaite pouvoir afficher ces messages depuis la taskbar, et aussi pouvoir quitter l'application avec le troisième bouton.

Voici le code pour ajouter les boutons dans l'aperçu de la taskbar :

1
2
3
4
5
6
7
8
9
    <Window.TaskbarItemInfo>
<TaskbarItemInfo>
<TaskbarItemInfo.ThumbButtonInfos>
<ThumbButtonInfo Description="Hello" ImageSource="office1.ico" />
<ThumbButtonInfo Description="Goodbye" ImageSource="office2.ico" />
<ThumbButtonInfo Description="Close" ImageSource="office3.ico" />
</TaskbarItemInfo.ThumbButtonInfos>
</TaskbarItemInfo>
</Window.TaskbarItemInfo>

La balise TaskbarItemInfo.ThumbButtonInfos contient une collection de ThumbButtonInfo qui sont les boutons présents dans notre aperçu. Les propriétés pour chaque bouton sont les suivantes :

ThumbButtonInfo Properties   ThumbButtonInfo Events

Les événements pour ces boutons sont des plus classiques : Changed et Click.

Les propriétés des boutons permettent les actions suivantes :
  • Command, CommandParameter, CommandTarget : permet d'associer un comportement au bouton avec ou sans paramètres, dans le cas de l'utilisation du pattern MVVM avec l'interface ICommand, ces propriétés peuvent être utile pour binder le behaviour correspondant. Sinon l'événement Click suffira simplement.
  • Description : permet de modifier la description qui apparait au dessus du bouton lors du passage de la souris.
  • DismissWhenClicked : permet de fermer l'aperçu lorsque l'on clique sur ce bouton.
  • ImageSource : permet de mettre une image dans  le bouton.
  • IsBackgroundVisible : permet de rendre l'arrière-plan visible.
IsBackgroundVisible = true et IsBackroundVisible = false

BackgroundVisible   BackgroundNotVisible

  • IsEnabled : active ou désactive le bouton en le grisant.
IsEnabled = true et IsEnabled = false (troisième bouton grisé)

IsEnabledTrue  IsEnabledFalse


  • IsInteractive : permet de rendre le bouton cliquable ou non. A la différence du IsEnabled, le bouton reste visible mais sans le griser.
IsInteractive = true et IsInteractive = false (deuxième bouton non cliquable mais non grisé)

BackgroundVisible  IsInteractiveFalse

  • Visibility : permet de rendre visible ou invisible le bouton de plusieurs façons différentes.
Visibility = Visible et Visibility = Hidden et Visibility = Collapsed

IsEnabledTrue  VisibilityHidden  VisibilityCollapsed

Pour notre application, il suffit de relier les événements Click de nos boutons de la taskbar aux événements Click des boutons présents dans l'application :

1
2
3
4
5
6
7
8
9
    <Window.TaskbarItemInfo>
<TaskbarItemInfo>
<TaskbarItemInfo.ThumbButtonInfos>
<ThumbButtonInfo Description="Hello" Click="btnHello_Click" ImageSource="office1.ico" />
<ThumbButtonInfo Description="Goodbye" Click="btnGoodbye_Click" ImageSource="office2.ico" />
<ThumbButtonInfo Description="Close" Click="ThumbButtonInfo_Click" ImageSource="office3.ico" />
</TaskbarItemInfo.ThumbButtonInfos>
</TaskbarItemInfo>
</Window.TaskbarItemInfo>

Et l'on obtient une application que l'on peut piloter à partir des boutons présents dans l'aperçu de la taskbar :

Final
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01