Jaa


Developpement Windows Phone - partie 10

Cet article fait partie d’une série d’articles sur le développement Windows Phone. Il s’agit d’une traduction des articles se trouvant sur la MSDN.

Sommaire

Bien débuter et fondamentaux

Visuels et média

Travailler avec les données

Sondes et autres fonctionnalités spécifiques au téléphone


Navigation

La navigation dans Windows Phone peut être définie comme la capacité qu’à l’utilisateur d’avancer dans différentes pages de contenu. Le modèle de navigation dans Windows Phone vous permet de créer des applications basées sur des vues qui possèdent le même look and feel que Windows Phone. Ce tutoriel vous montre comment créer une navigation entre différentes pages dans vos applications.

Ce tutorial contient les sections suivantes :

 

Frames et Pages

L’expérience de navigation dans Windows Phone est similaire à l’expérience de navigation en Silverlight, mais elle a été étendue pour supporter des scénarios spécifiques au téléphone. Le modèle de navigation dans Windows Phone est basé sur un contrôle PhoneApplicationFrame. PhoneApplicationFrame contient un ou plusieurs contrôles PhoneApplicationPage entre lesquels l’utilisateur peut naviguer. PhoneApplicationFrame est le contrôle de navigation principal et supporte la navigation depuis et vers une page. PhoneApplicationPage encapsule le contenu qui peut être navigué à travers un PhoneApplicationFrame.

clip_image004[1]

Une page est une collection d’états persistants. Il peut être considéré comme une page Silverlight qui contient du contenu ou des liens vers d’autres pages. Une application peut aussi contenir des pop-ups, des boites de dialogue, un écran de login, ou un splash screen qui contient usuellement un état persistant.

Seulement se déplacer entre deux pages est considéré comme de la navigation dans Windows Phone. Se déplacer d’une page de login ou d’un splash screen à la Home page n’est pas considéré comme de la navigation et ne peut donc être considéré comme une transition.

 

La façon la plus simple de mettre en place une navigation par page est d’utiliser un contrôle HyperlinkButton . Vous pouvez utiliser se propriété NavigationUri pour naviguer vers une page. L’exemple suivant illustre comment naviguer vers une page nommée SecondPage.xaml.

XAML

  1. <HyperlinkButton NavigateUri="SecondPage.xaml" />

Si vous ne souhaitez pas utiliser un HyperlinkButton, vous pouvez mettre en place une navigation en utilisant la classe NavigationService. Cette classe contient plusieurs propriétés, méthodes et évènements qui vous aideront avec la navigation. Vous pouvez utiliser la méthode NavigationService.Navigate pour naviguer vers une page spécifique. Pour naviguer depuis une page vers une autre page, effectuez les étapes suivantes.

1. Créez une application Windows Phone dans Visual Studio.

2. Ajoutez une page Windows Phone en mode portrait nommée SecondPage.xaml vers laquelle vous pourrez naviguer depuis MainPage.

3. Utilisez la méthode NavigationService.Navigate pour naviguer vers SecondPage.xaml.

4. Utilisez la méthode NavigationService.GoBack pour revenir à MainPage.xaml.

L’exemple suivant crée deux pages appelées home page et second.page. Vous pouvez naviguer depuis la home page vers la seconde page en cliquant sur le bouton Go to the second page dans la home page. Ceci est fait en utilisant la méthode NavigationService.Navigate avec l’URI de la seconde page (qui est /SecondPage.xaml) dans l’évènement du Click du bouton. Vous pouvez revenir à la home page en cliquant sur le bouton "Go Back to Main Page" dans la seconde page. Ceci est fait en appelant la méthode NavigationService.GoBack dans l’évènement du click du bouton. La méthode NavigationService.GoBack navigue vers l’entrée la plus récente dans l’historique de navigation, dans notre cas, la home page. Avant d’appeler la méthode NavigationService.GoBack, vous devez vérifier la valeur de la propriété NavigationService.CanGoBack pour déterminer s’il existe des éléments dans l’historique de navigation.

Astuce

Bien que la méthode NavigationService.GoBack ait été utilisée dans notre exemple pour revenir à la home page, un clic sur le bouton Retour du téléphone navigue lui aussi vers la page précédente.

XAML pour MainPage.xaml

  1. <Grid x:Name="LayoutRoot" Background="Transparent">
  2.     <Grid.RowDefinitions>
  3.         <RowDefinition Height="Auto"/>
  4.         <RowDefinition Height="*"/>
  5.     </Grid.RowDefinitions>
  6.     <!--TitlePanel contains the name of the application and page title-->
  7.     <StackPanel x:Name="TitlePanel" Grid.Row="0"
  8.                 Margin="12,17,0,28">
  9.         <TextBlock x:Name="ApplicationTitle" Text="Navigation"
  10.                    Style="{StaticResource PhoneTextNormalStyle}"/>
  11.         <TextBlock x:Name="PageTitle" Text="home page"
  12.                    Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
  13.     </StackPanel>
  14.     <!--ContentPanel - place additional content here-->
  15.     <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
  16.         <Button x:Name="MyButton" Height="100" Width="350"
  17.                 Click="MyButton_Click" Content="Go to Second Page"/>
  18.     </Grid>
  19. </Grid>

 

C# pour MainPage.xaml.cs

  1. private void MyButton_Click(object sender, RoutedEventArgs e)
  2. {
  3.     NavigationService.Navigate(new Uri("/SecondPage.xaml",
  4.     UriKind.RelativeOrAbsolute));
  5. }

Visual Basic pour MainPage.xam

  1. Private Sub MyButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
  2.     NavigationService.Navigate(New Uri("/SecondPage.xaml", UriKind.RelativeOrAbsolute))
  3. End Sub

XAML pour SecondPage.xaml

  1. <Grid x:Name="LayoutRoot" Background="Transparent">
  2.     <Grid.RowDefinitions>
  3.         <RowDefinition Height="Auto"/>
  4.         <RowDefinition Height="*"/>
  5.     </Grid.RowDefinitions>
  6.     <!--TitlePanel contains the name of the application and page title-->
  7.     <StackPanel x:Name="TitlePanel" Grid.Row="0"
  8.                 Margin="12,17,0,28">
  9.         <TextBlock x:Name="ApplicationTitle" Text="Navigation"
  10.                    Style="{StaticResource PhoneTextNormalStyle}"/>
  11.         <TextBlock x:Name="PageTitle" Text="second page"
  12.                    Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
  13.     </StackPanel>
  14.     <!--ContentPanel - place additional content here-->
  15.     <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
  16.         <Button x:Name="BtnBack" Content="Go Back to Home Page"
  17.                 Click="BtnBack_Click" Height="100" Width="350"/>
  18.     </Grid>
  19. </Grid>

C# pour SecondPage.xaml.cs

  1. private void BtnBack_Click(object sender, RoutedEventArgs e)
  2. {
  3.     if (NavigationService.CanGoBack)
  4.         NavigationService.GoBack();
  5. }

Visual Basic pour SecondPage.x

  1. Private Sub BtnBack_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
  2.     If NavigationService.CanGoBack Then
  3.         NavigationService.GoBack()
  4.     End If
  5. End Sub

L’illustration ci-dessous montre la home page et la seconde page de l’exemple précédent. La navigation est mise en place à travers l’utilisation des méthodes NavigationService.Navigate et NavigationService.GoBack.

clip_image006

Transmettre des données entre Pages

Souvent, vous aurez besoin de passer des données d’une page à une autre lors de la navigation entre ces pages. Par exemple, vous aurez peut-être besoin de transmettre le texte saisi par l’utilisateur sur la home page pour l’afficher dans la seconde page. Vous pouvez utiliser la méthode NavigationService.Navigate pour naviguer vers la seconde page et passer la chaine de caractère entrée dans la home page à la seconde page dans l’URI en utilisant une query string. Vous pouvez alors surcharger la méthode Page.OnNavigatedTo dans SecondPage.xaml.cs pour analyser le requête de navigation venue de la home page et en extraire la string data. L’exemple suivant illustre le passage de donnée d’un page à une autre en utilisant les méthodes NavigationService.Navigate et Page.OnNavigatedTo.

XAML pour MainPage.xaml

  1. <Grid x:Name="LayoutRoot" Background="Transparent">
  2.     <Grid.RowDefinitions>
  3.         <RowDefinition Height="Auto"/>
  4.         <RowDefinition Height="*"/>
  5.     </Grid.RowDefinitions>
  6.     <!--TitlePanel contains the name of the application and page title-->
  7.     <StackPanel x:Name="TitlePanel" Grid.Row="0"
  8.                 Margin="12,17,0,28">
  9.         <TextBlock x:Name="ApplicationTitle" Text="Navigation"
  10.                    Style="{StaticResource PhoneTextNormalStyle}"/>
  11.         <TextBlock x:Name="PageTitle" Text="home page"
  12.                    Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
  13.     </StackPanel>
  14.     <!--ContentPanel - place additional content here-->
  15.     <StackPanel x:Name="ContentPanel" Grid.Row="1"
  16.                 Margin="12,0,12,0">
  17.         <TextBox x:Name="MyTB" Height="80"
  18.                  Width="350" />
  19.         <Button x:Name="MyButton" Content="Go to Second Page"
  20.                 Height="80" Width="350" Click="MyButton_Click"/>
  21.     </StackPanel>
  22. </Grid>

C# pour MainPage.xaml.cs

  1. private void MyButton_Click(object sender, RoutedEventArgs e)
  2. {
  3.     NavigationService.Navigate(new Uri("/SecondPage.xaml?msg=" +
  4.     MyTB.Text, UriKind.RelativeOrAbsolute));
  5. }

Visual Basic pour MainPage.xam

  1. Class MainWindow
  2.     Private Sub MyButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
  3.         NavigationService.Navigate(New Uri(("/SecondPage.xaml?msg=" + MyTB.Text), UriKind.RelativeOrAbsolute))
  4.     End Sub

XAML pour SecondPage.xaml

  1. <Grid x:Name="LayoutRoot" Background="Transparent">
  2.     <Grid.RowDefinitions>
  3.         <RowDefinition Height="Auto"/>
  4.         <RowDefinition Height="*"/>
  5.     </Grid.RowDefinitions>
  6.     <!--TitlePanel contains the name of the application and page title-->
  7.     <StackPanel x:Name="TitlePanel" Grid.Row="0"
  8.                 Margin="12,17,0,28">
  9.         <TextBlock x:Name="ApplicationTitle" Text="Navigation"
  10.                    Style="{StaticResource PhoneTextNormalStyle}"/>
  11.         <TextBlock x:Name="PageTitle" Text="second page"
  12.                    Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
  13.     </StackPanel>
  14.     <!--ContentPanel - place additional content here-->
  15.     <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
  16.         <TextBlock x:Name="MyTBl" FontSize="25"/>
  17.     </Grid>
  18. </Grid>

C# pour SecondPage.xaml.cs

  1.  
  2. protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
  3. {
  4.     base.OnNavigatedTo(e);
  5.     string msg = "";
  6.     if (NavigationContext.QueryString.TryGetValue("msg", out msg))
  7.         MyTBl.Text = msg;
  8. }

Visual Basic pour SecondPage.x

  1. Protected Overrides Sub OnNavigatedTo(ByVal e As System.Windows.Navigation.NavigationEventArgs)
  2.     MyBase.OnNavigatedTo(e)
  3.     Dim msg As String = ""
  4.     If NavigationContext.QueryString.TryGetValue("msg", msg) Then
  5.         MyTBl.Text = msg
  6.     End If
  7. End Sub

L’illustration ci-dessous montre la home page et la second page de l’exemple précédent. La chaine de caractère saisie dans la zone de saisie est passée à la seconde page, qui l’affiche dans un text block.

clip_image008

Astuce

Pour les pages qui affichent plusieurs sections de contenu, vous pouvez afficher différents sets de contenu sans utiliser de mécanisme de navigation tout simplement en re-binding les contrôles de votre page sur un nouveau DataContext.

 

Application Bar

L’Application Bar est un ensemble de un à quatre boutons qui peut être affiché au bas de l’écran du téléphone en mode portrait ou sur le côté en mode paysage. Il s’agit du menu système qui est utilisé dans Windows Phone 7, et les boutons de l’Application Bar sont utilisés pour fournir à l’utilisateur un accès rapide aux fonctions les plus utilisées de l’application.

L’illustration ci-dessous montre une Application Bar dans Windows Phone 7, dans son état déplié.

clip_image010

Les boutons avec une icône dans l’Application Bar sont appelés icon buttons. Vous pouvez avoir un maximum de quatre icon buttons. Si vous essayez d’ajouter plus de quatre icon buttons une exception sera levée au démarrage de votre application. L’ ellipsis dans le coin en haut à droite de l’Application Bar est utilisé pour déplier et replier l’ Application Bar. Le texte des icon buttons n’apparait que si l’ Application Bar est dans son état déplié. Vous pouvez utiliser l’évènement Click pour exécuter l’action lorsque l’utilisateur clique sur l’icon button.

En plus de la ligne d’icon buttons, l’Application Bar peut aussi fournir un ou plusieurs éléments de menu basés sur du texte. Ces éléments sont affichés en tant que liste sous les icon buttons lorsque l’utilisateur clique sur l’ ellipsis à droite des icon buttons ou sur l’espace vide à gauche des icon buttons. Dans l’illustration précédente, about et settings sont des éléments de menu. Cette liste de menu n’est pas hiérarchique, il ne s’agit donc pas d’un sous-menu de l’icon buttons. Les éléments de menu sont plutôt utilisés pour les actions de l’application qui sont utilisées moins fréquemment et pour les actions qui sont plus difficiles à représenter par une icône et qui nécessitent donc une représentation textuelle.

L’illustration ci-dessous montre l’Application Bars en état plié et déplié. Avec et sans élément de menu.

clip_image012

Vous pouvez ajouter une Application Bar à votre application Windows Phone en utilisant le classe ApplicationBar. Vous pouvez ajouter l’ Application Bar soit depuis le XAML ou depuis le C#. Si vous choisissez de créer l’ Application Bar entièrement en XAML, le template de projet Windows Phone qui est fourni avec les Windows Phone Developer Tools inclut une implémentation de l’ Application Bar dans le fichier MainPage.xaml. Tout ce que vous avez besoin de faire c’est de décommenter la définition de l’ Application Bar et de modifier le code pour utiliser les icônes et les menus textuels que vous souhaitez.

Dans l’exemple suivant le template de l’Application Bar par défaut a été modifié pour créer trois icon buttons (new, folders, et sync) et deux éléments de menu (settings et add email account).

XAML

  1. <phone:PhoneApplicationPage.ApplicationBar>
  2.     <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
  3.         <shell:ApplicationBarIconButton x:Name="newButton"
  4.                                         IconUri="/Images/appbar.new.rest.png" Text="new"
  5.                                         Click="newButton_Click"/>
  6.         <shell:ApplicationBarIconButton x:Name="folderButton"
  7.                                         IconUri="/Images/appbar.folder.rest.png" Text="folders"
  8.                                         Click="folderButton_Click"/>
  9.         <shell:ApplicationBarIconButton x:Name="syncButton"
  10.                                         IconUri="/Images/appbar.refresh.rest.png" Text="sync"
  11.                                         Click="syncButton_Click"/>
  12.         <shell:ApplicationBar.MenuItems>
  13.             <shell:ApplicationBarMenuItem Text="settings"/>
  14.             <shell:ApplicationBarMenuItem Text="add email account"/>
  15.         </shell:ApplicationBar.MenuItems>
  16.     </shell:ApplicationBar>
  17. </phone:PhoneApplicationPage.ApplicationBar>

L’illustration montre le résultat de l’exemple précédent.

clip_image014

Notez que l’exemple précédent utilise des images pour les icon buttons. Pour des guidelines sur la création d’images des icon buttons des Application Bar, et une liste d’images prête que vous pouvez utiliser dans vos applications, jetez un œil sur Application Bar Best Practices for Windows Phone.

L’Application Bar n’est pas un contrôle Silverlight et ne supporte pas le data binding. Cela signifie que les chaines de caractères utilisées par les labels des boutons doivent être définies en dur dans le XAML et ne peuvent être localisées. Si vous prévoyez de localiser votre application ou si vous êtes plus à l’aise en C#, vous pouvez créer l’Application Bar depuis le code, ou utiliser le C# pour modifier par code les valeurs des textes au moment de l’exécution.

L’exemple suivant montre comment créer une Application Bar par code. Tout d’abord, vous créez l’Application Bar en utilisant la classe ApplicationBar. Vous pouvez alors créer les icon buttons en utilisant la classe ApplicationBarIconButton et ajouter ces icon buttons à l’Application Bar en utilisant la méthode ApplicationBar.Buttons.Add. Vous pouvez créer des éléments de menu en utilisant ApplicationBarMenuItem et ajouter ces derniers à l’Application Bar en utilisant la méthode ApplicationBar.MenuItems.Add.

C#

  1. public void MainPage()
  2. {
  3.     InitializeComponent();
  4.     //Create the ApplicationBar
  5.     ApplicationBar = new ApplicationBar();
  6.     ApplicationBar.IsVisible = true;
  7.     ApplicationBar.IsMenuEnabled = true;
  8.     //Create the icon buttons and setting its properties
  9.     ApplicationBarIconButton newButton = new ApplicationBarIconButton(new Uri
  10.     ("/Images/appbar.add.rest.png", UriKind.Relative));
  11.     newButton.Text = "new";
  12.     newButton.Click += new EventHandler(newButton_Click);
  13.     ApplicationBarIconButton folderButton = new ApplicationBarIconButton(new Uri
  14.     ("/Images/appbar.folder.rest.png", UriKind.Relative));
  15.     folderButton.Text = "folders";
  16.     folderButton.Click += new EventHandler(folderButton_Click);
  17.     ApplicationBarIconButton syncButton = new ApplicationBarIconButton(new Uri
  18.     ("/Images/appbar.sync.rest.png", UriKind.Relative));
  19.     syncButton.Text = "sync";
  20.     syncButton.Click += new EventHandler(syncButton_Click);
  21.     //Add the icon buttons to the Application Bar
  22.     ApplicationBar.Buttons.Add(newButton);
  23.     ApplicationBar.Buttons.Add(folderButton);
  24.     ApplicationBar.Buttons.Add(syncButton);
  25.     //Create menu items
  26.     ApplicationBarMenuItem settingsMenuItem = new ApplicationBarMenuItem
  27.     ("settings");
  28.     settingsMenuItem.Click += new EventHandler(settingsMenuItem_Click);
  29.     ApplicationBarMenuItem addaccountMenuItem = new ApplicationBarMenuItem
  30.     ("add email account");
  31.     addaccountMenuItem.Click += new EventHandler(addaccountMenuItem_Click);
  32.     //Add the menu items to the Application Bar
  33.     ApplicationBar.MenuItems.Add(settingsMenuItem);
  34.     ApplicationBar.MenuItems.Add(addaccountMenuItem);
  35. }

Visual Basic

  1. {publicMainPage
  2. InitializeComponent
  3. 'Create the ApplicationBar
  4. ApplicationBar = New ApplicationBar
  5. ApplicationBar.IsVisible = true
  6. ApplicationBar.IsMenuEnabled = true
  7. 'Create the icon buttons and set its properties
  8. Dim newButton As ApplicationBarIconButton = New ApplicationBarIconButton(New Uri("/Images/appbar.add.rest.png", UriKind.Relative))
  9. newButton.Text = "new"
  10. AddHandler newButton.Click, AddressOf Me.newButton_Click
  11. Dim folderButton As ApplicationBarIconButton = New ApplicationBarIconButton(New Uri("/Images/appbar.folder.rest.png", UriKind.Relative))
  12. folderButton.Text = "folders"
  13. AddHandler folderButton.Click, AddressOf Me.folderButton_Click
  14. Dim syncButton As ApplicationBarIconButton = New ApplicationBarIconButton(New Uri("/Images/appbar.sync.rest.png", UriKind.Relative))
  15. syncButton.Text = "sync"
  16. AddHandler syncButton.Click, AddressOf Me.syncButton_Click
  17. 'Add the icon buttons to the Application Bar
  18. ApplicationBar.Buttons.Add(newButton)
  19. ApplicationBar.Buttons.Add(folderButton)
  20. ApplicationBar.Buttons.Add(syncButton)
  21. 'Create menu items
  22. Dim settingsMenuItem As ApplicationBarMenuItem = New ApplicationBarMenuItem("settings")
  23. AddHandler settingsMenuItem.Click, AddressOf Me.settingsMenuItem_Click
  24. Dim addaccountMenuItem As ApplicationBarMenuItem = New ApplicationBarMenuItem("add email account")
  25. AddHandler addaccountMenuItem.Click, AddressOf Me.addaccountMenuItem_Click
  26. 'Add the menu items to the Application Bar
  27. ApplicationBar.MenuItems.Add(settingsMenuItem)
  28. ApplicationBar.MenuItems.Add(addaccountMenuItem)

L’Application Bar peut être définie localement ou globalement. Une Application Bar locale peut être seulement utilisée par la page qui le défini. Cette approche est utile si différentes pages de votre application possèdent différentes actions possibles. Par exemple, si vous créez une application d’email, la page de la boite de réception va sans doute avoir des actions telles que create new email et sync, et la page d’un nouvel email va avoir des actions comme send ou delete. Il est donc censé d’avoir des Application Bar différentes pour la page de la boite de réception et celle d’un nouvel email.

Une Application Bar global peut être partagée entre les différentes pages de votre application. Une Application Bar global est créée en tant que ressource d’application dans le fichier App.xaml. Pour créer une Application Bar global, vous devrez effectuer les actions suivantes.

  • Ajouter la définition XAML de l’Application Bar dans la section <Application.Resources> du fichier App.xaml.
  • Ajouter l’attribut suivant dans le nœud <phone:PhoneApplicationPage> de chaque page dans laquelle vous voudrez utiliser l’ Application Bar :

XAML

  1. ApplicationBar="{StaticResource GlobalAppMenuBar}"

Pour plus d’information sur l’ Application Bar, jetez un œil au Application Bar for Windows Phone.

Bouton Retour

Chaque téléphone Windows Phone inclut un bouton physique Retour. Ce bouton permet à l’utilisateur de naviguer vers la page précédente d’un application et vers d’autres applications. Par exemple, vous pouvez cliquer sur un lien dans une de votre application d’emails pour ouvrir un web browser, et appuyer tout naturellement sur le bouton physique Retour pour retourner dans votre application d’emails. Ceci permet une expérience utilisateur bien plus consistante à travers différentes applications, qu’elles soient des applications externes ou inclut dans le Windows Phone. Windows Phone permet cela en maintenant un historique de vos actions de navigation. Ceci est aussi appelé back-stack.

L’illustration suivante montre le bouton physique de bouton Retour, le bouton Démarrer, et le bouton Rechercher.

clip_image016

Vous pouvez surcharger le bouton Retour pour le personnaliser et faire ce que vous souhaitez. Toutefois, lorsque vous faites cela, vous devez garder à l’esprit ce que l’utilisateur considère comme "retour". Par exemple, si vous affichez une boite de dialogue dans votre application, vous avez peut-être surchargé l’action retour pour sortir de l’application, mais l’utilisateur s’attend peut être à fermer uniquement la boite de dialogue.

Vous pouvez surcharger le comportement du bouton Retour en surchargeant la méthode PhoneApplicationPage.OnBackKeyPress.

L’exemple suivant contient un text box. Si vous saisissez du texte dans le text box et que vous appuyez sur le bouton physique Retour, une boite de dialogue s’affiche avec le message "You are about to discard your changes. Continue". Ce comportement est implémenté en surchargeant la méthode PhoneApplicationPage.OnBackKeyPress.

C#

  1. protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
  2. {
  3.     base.OnBackKeyPress(e);
  4.     if (MyTB.Text != string.Empty)
  5.     {
  6.         var result = MessageBox.Show("You are about to discard your changes. Continue?",
  7.         "Warning", MessageBoxButton.OKCancel);
  8.         if (result != MessageBoxResult.OK)
  9.         {
  10.             e.Cancel = true;
  11.         }
  12.     }
  13. }

Visual Basic

  1. Protected Overrides Sub OnBackKeyPress(ByVal e As System.ComponentModel.CancelEventArgs)
  2.     MyBase.OnBackKeyPress(e)
  3.     If (MyTB.Text <> String.Empty) Then
  4.         Dim result As var = MessageBox.Show("You are about to discard your changes. Continue?", "Warning", MessageBoxButton.OKCancel)
  5.         If (result <> MessageBoxResult.OK) Then
  6.             e.Cancel = True
  7.         End If
  8.     End If
  9. End Sub

L’illustration ci-dessous montre le résultat de l’exemple précédent. Si l’utilisateur appuie sur le bouton Retour alors qu’il y a du texte dans le text box, un message s’affiche.

clip_image018

Gardez ces bonnes pratiques à l’esprit lorsque vous surchargez le bouton Retour :

  • Pensez à ce que "retour" signifie pour l’utilisateur dans le contexte de l’application.
  • Si l’utilisateur appuie sur le bouton Retour une deuxième fois, vous devez laisser le comportement par défaut s’effectuer.
  • Essayez de ne pas trop utiliser les boutons Retour pour les navigations locales.
  • Pour implémenter des interfaces transitoires, comme un écran de login, utilisez le contrôle de Popup de Silverlight pour afficher du contenu qui couvre une partie de l’écran au lieu d’implémenter une page séparée qui nécessite une navigation. Vous pouvez ajouter la méthode PhoneApplicationPage.OnBackKeyPress à votre code et affecter true à e.Cancel (comme montré dans l’exemple précédent) pendant que la pop-up est visible pour permettre à l’utilisateur d’utiliser le bouton Retour pour fermer la pop-up.

 

A voir

 


Cliquez ici pour revenir au sommaire de la liste d’articles