none
application unverselle vb2015 en c#

    Question

  • bonjour

     je voudrais  pouvoir réaliser un développement en application universelle  comportant plusieurs  pages comment faire pour pouvoir les déclencher par un click sur un bouton merci de m'aider

    samedi 19 novembre 2016 08:39

Réponses

  • Bonjour,

    Je vous en prie :). Voici le code : 

    Page principale

    XAML :

    <Page
        x:Class="ForumReponseNavigation.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:ForumReponseNavigation"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
            <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
                <TextBlock Text="Page principale"
                           Style="{StaticResource TitleTextBlockStyle}" />
                <Button Content="Petit déjeuner" Margin="5" Tapped="PetitDejeuner_Tapped"/>
                <Button Content="déjeuner"
                        Margin="5" Tapped="Dejeuner_Tapped"/>
                <Button Content="collation"
                        Margin="5" Tapped="Collation_Tapped"/>
    
            </StackPanel>
        </Grid>
    </Page>

    C# :

    namespace ForumReponseNavigation
    {
        /// <summary>
        /// An empty page that can be used on its own or navigated to within a Frame.
        /// </summary>
        public sealed partial class MainPage : Page
        {
            public MainPage()
            {
                this.InitializeComponent();
            }
    
            /// <summary>
            /// Navigation vers la page petit déjeuner
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void PetitDejeuner_Tapped(object sender, TappedRoutedEventArgs e)
            {
                this.Frame.Navigate(typeof(PetitDejeunerPage));
            }
    
            /// <summary>
            /// Navigation vers la page Déjeuner
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void Dejeuner_Tapped(object sender, TappedRoutedEventArgs e)
            {
                this.Frame.Navigate(typeof(DejeunerPage));
            }
    
            /// <summary>
            /// Navigation vers la page Collation
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void Collation_Tapped(object sender, TappedRoutedEventArgs e)
            {
                this.Frame.Navigate(typeof(CollationPage));
            }
        }
    }

    Page Déjeuner

    XAML :

    <Page
        x:Class="ForumReponseNavigation.DejeunerPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:ForumReponseNavigation"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
            <TextBlock Text="DejeunerPage"
                       Margin="20" />
        </Grid>
    </Page>

    C# :

    namespace ForumReponseNavigation
    {
        /// <summary>
        /// An empty page that can be used on its own or navigated to within a Frame.
        /// </summary>
        public sealed partial class DejeunerPage : Page
        {
            public DejeunerPage()
            {
                this.InitializeComponent();
    
                //Affichage du bouton retour
                SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
    
    
                //Retour vers la page principale
                SystemNavigationManager.GetForCurrentView().BackRequested += (s, e) =>
                {
                    Frame.Navigate(typeof(MainPage));
                };
            }
        }
    }

    Il ne vous reste plus qu'à appliquer la même logique sur les autres pages.

    Ai-je bien répondu à votre question?



    VP utiliser le bouton "Marquer comme réponse"; sur les réponses qui vous aide car cela permet aux personnes qui peuvent rencontrer le même problème que vous, de retrouver rapidement quelle est la réponse qui a résolu leur problème. De plus, cela encourage aussi la personne qui a répondu à votre question, et de répondre aux suivantes...


    jeudi 24 novembre 2016 10:23

Toutes les réponses

  • Bonjour,

    L'action "accéder à une page" dans une application universelle est en fait une "Navigation".

    Ce qu'il faut savoir dans ce type d'application c'est que l'une de ses caractéristiques consiste à afficher qu'une seule page à la fois. D'ailleurs quand "déclenche une navigation", il n'est possible que d'aller vers une seule page à la fois.

    Du coup, si votre demande consiste à afficher plusieurs pages en même temps d'une application universelle, ce ne sera pas possible.

    Exemple de scénario :

    Une application universelle A contient plusieurs pages (Page 1, Page 2, Page 3...Page N). Dans la Page 1, j'ai un bouton "Ouvrir toutes les pages" qui permet à l'utilisateur d'afficher en même temps la Page 2, Page 3,... dans le même écran et simultanément.

    ==> Ce scénario est IMPOSSIBLE à mettre en place.

    Si votre demande ne concerne pas le scénario cité plus haut, pouvez-vous me donner plus d'explications sur votre demande?



    MCTS : Web Applications Development with Microsoft .NET Framework 4 / Accessing Data with Microsoft .NET Framework 4 / Pro: Designing and Developing Web Applications Using Microsoft .NET Framework 4.0

    mercredi 23 novembre 2016 16:25
  • Sauf si vous créez une frame, vous la partitionner en nombre de pages que vous voulez affichez. Et ensuite vous réservez un emplacement par page. Ce qui implique de connaître à l'avance le nombre de page que vous souhaitez afficher et dans quelle emplacement

    VP utiliser le bouton "Marquer comme réponse" sur les réponses qui vous aide car cela permet aux personnes qui peuvent rencontrer le même problème que vous, de retrouver rapidement quelle est la réponse qui a résolu leur problème. De plus, cela encourage aussi la personne qui a répondu à votre question, à répondre aux suivantes... ______________________________________________________________________________ MCTS : Web Applications Development with Microsoft .NET Framework 4 / Accessing Data with Microsoft .NET Framework 4 / Pro: Designing and Developing Web Applications Using Microsoft .NET Framework 4.0

    mercredi 23 novembre 2016 17:35
  • Bonjour merci de l’Intérêt que vous avez porte à ma question voici le scenario que je désire mettre en place

     depuis la page principale de voudrais appeler une ou l'autre des pages et faire un retour vers la page principale 

    jeudi 24 novembre 2016 09:55
  • Bonjour,

    Je vous en prie :). Voici le code : 

    Page principale

    XAML :

    <Page
        x:Class="ForumReponseNavigation.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:ForumReponseNavigation"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
            <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
                <TextBlock Text="Page principale"
                           Style="{StaticResource TitleTextBlockStyle}" />
                <Button Content="Petit déjeuner" Margin="5" Tapped="PetitDejeuner_Tapped"/>
                <Button Content="déjeuner"
                        Margin="5" Tapped="Dejeuner_Tapped"/>
                <Button Content="collation"
                        Margin="5" Tapped="Collation_Tapped"/>
    
            </StackPanel>
        </Grid>
    </Page>

    C# :

    namespace ForumReponseNavigation
    {
        /// <summary>
        /// An empty page that can be used on its own or navigated to within a Frame.
        /// </summary>
        public sealed partial class MainPage : Page
        {
            public MainPage()
            {
                this.InitializeComponent();
            }
    
            /// <summary>
            /// Navigation vers la page petit déjeuner
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void PetitDejeuner_Tapped(object sender, TappedRoutedEventArgs e)
            {
                this.Frame.Navigate(typeof(PetitDejeunerPage));
            }
    
            /// <summary>
            /// Navigation vers la page Déjeuner
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void Dejeuner_Tapped(object sender, TappedRoutedEventArgs e)
            {
                this.Frame.Navigate(typeof(DejeunerPage));
            }
    
            /// <summary>
            /// Navigation vers la page Collation
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void Collation_Tapped(object sender, TappedRoutedEventArgs e)
            {
                this.Frame.Navigate(typeof(CollationPage));
            }
        }
    }

    Page Déjeuner

    XAML :

    <Page
        x:Class="ForumReponseNavigation.DejeunerPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:ForumReponseNavigation"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
            <TextBlock Text="DejeunerPage"
                       Margin="20" />
        </Grid>
    </Page>

    C# :

    namespace ForumReponseNavigation
    {
        /// <summary>
        /// An empty page that can be used on its own or navigated to within a Frame.
        /// </summary>
        public sealed partial class DejeunerPage : Page
        {
            public DejeunerPage()
            {
                this.InitializeComponent();
    
                //Affichage du bouton retour
                SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
    
    
                //Retour vers la page principale
                SystemNavigationManager.GetForCurrentView().BackRequested += (s, e) =>
                {
                    Frame.Navigate(typeof(MainPage));
                };
            }
        }
    }

    Il ne vous reste plus qu'à appliquer la même logique sur les autres pages.

    Ai-je bien répondu à votre question?



    VP utiliser le bouton "Marquer comme réponse"; sur les réponses qui vous aide car cela permet aux personnes qui peuvent rencontrer le même problème que vous, de retrouver rapidement quelle est la réponse qui a résolu leur problème. De plus, cela encourage aussi la personne qui a répondu à votre question, et de répondre aux suivantes...


    jeudi 24 novembre 2016 10:23
  • un grand merci
    jeudi 24 novembre 2016 10:57
  • bonjour

    je vien de suivre à la lettre le code dont je vous remercie cela est important pour moi qui suis autodidacte mais j'obtiens une erreur dont je ne sais pas d'où elle se trouve et pourquoi pouvez voler à mon secours une nouvelle fois un grand merci voici la copie d'"écran

    samedi 26 novembre 2016 10:57
  • Bonsoir,

    Pouvez-vous poster le code du fichier App.xaml.cs?

    Merci d'avance


    VP utiliser le bouton "Marquer comme réponse"; sur les réponses qui vous aide car cela permet aux personnes qui peuvent rencontrer le même problème que vous, de retrouver rapidement quelle est la réponse qui a résolu leur problème. De plus, cela encourage aussi la personne qui a répondu à votre question, et de répondre aux suivantes...


    dimanche 27 novembre 2016 20:41
  • bonjour

    voila le code du fichier App.xaml.cs

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Runtime.InteropServices.WindowsRuntime;
    using Windows.ApplicationModel;
    using Windows.ApplicationModel.Activation;
    using Windows.Foundation;
    using Windows.Foundation.Collections;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Controls.Primitives;
    using Windows.UI.Xaml.Data;
    using Windows.UI.Xaml.Input;
    using Windows.UI.Xaml.Media;
    using Windows.UI.Xaml.Navigation;
    
    namespace votre_ration_journaliere
    {
        /// <summary>
        /// Provides application-specific behavior to supplement the default Application class.
        /// </summary>
        sealed partial class App : Application
        {
            /// <summary>
            /// Initializes the singleton application object.  This is the first line of authored code
            /// executed, and as such is the logical equivalent of main() or WinMain().
            /// </summary>
            public App()
            {
                this.InitializeComponent();
                this.Suspending += OnSuspending;
            }
    
            /// <summary>
            /// Invoked when the application is launched normally by the end user.  Other entry points
            /// will be used such as when the application is launched to open a specific file.
            /// </summary>
            /// <param name="e">Details about the launch request and process.</param>
            protected override void OnLaunched(LaunchActivatedEventArgs e)
            {
    #if DEBUG
                if (System.Diagnostics.Debugger.IsAttached)
                {
                    this.DebugSettings.EnableFrameRateCounter = true;
                }
    #endif
                Frame rootFrame = Window.Current.Content as Frame;
    
                // Do not repeat app initialization when the Window already has content,
                // just ensure that the window is active
                if (rootFrame == null)
                {
                    // Create a Frame to act as the navigation context and navigate to the first page
                    rootFrame = new Frame();
    
                    rootFrame.NavigationFailed += OnNavigationFailed;
    
                    if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
                    {
                        //TODO: Load state from previously suspended application
                    }
    
                    // Place the frame in the current Window
                    Window.Current.Content = rootFrame;
                }
    
                if (e.PrelaunchActivated == false)
                {
                    if (rootFrame.Content == null)
                    {
                        // When the navigation stack isn't restored navigate to the first page,
                        // configuring the new page by passing required information as a navigation
                        // parameter
                        rootFrame.Navigate(typeof(MainPage), e.Arguments);
                    }
                    // Ensure the current window is active
                    Window.Current.Activate();
                }
            }
    
            /// <summary>
            /// Invoked when Navigation to a certain page fails
            /// </summary>
            /// <param name="sender">The Frame which failed navigation</param>
            /// <param name="e">Details about the navigation failure</param>
            void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
            {
                throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
            }
    
            /// <summary>
            /// Invoked when application execution is being suspended.  Application state is saved
            /// without knowing whether the application will be terminated or resumed with the contents
            /// of memory still intact.
            /// </summary>
            /// <param name="sender">The source of the suspend request.</param>
            /// <param name="e">Details about the suspend request.</param>
            private void OnSuspending(object sender, SuspendingEventArgs e)
            {
                var deferral = e.SuspendingOperation.GetDeferral();
                //TODO: Save application state and stop any background activity
                deferral.Complete();
            }
        }
    }
    

    lundi 28 novembre 2016 09:36
  • Merci.

    En fait votre message d'erreur signifie que votre page MainPage n'est pas référenciée.

    Voilà ce que je vous propose : 

    • Fermer tous les onglets actifs de votre projet.
    • Nettoyer la solution et déployer votre projet.

    Si le message d'erreur persiste, vérifier que dans la classe App.xaml.cs sur cette ligne de code : 

     rootFrame.Navigate(typeof(MainPage), e.Arguments);

    Que MainPage soit bien reconnu, si ce n'est pas le cas, faites un clique droit sur "MainPage" et choisissez l'option qui commence par "using...." avec une espace de nom ou envoyez moi une capture d'écran des options que visual studio vous propose une fois que vous faites le clic droit sur la classe MainPage dans App.xaml.cs


    VP utiliser le bouton "Marquer comme réponse"; sur les réponses qui vous aide car cela permet aux personnes qui peuvent rencontrer le même problème que vous, de retrouver rapidement quelle est la réponse qui a résolu leur problème. De plus, cela encourage aussi la personne qui a répondu à votre question, et de répondre aux suivantes...

    lundi 28 novembre 2016 09:47