none
vs 2019 uwp declencher un progressbar RRS feed

  • Question

  • bonjour

     je viens d’écrire un code pour déclencher un progressbar  avec un bouton qui enclenche un storyboard pour un temps d e5 seconde mais cela ne fonctionne pas

     pourriez vous m'aider je vous joint mon code  je vous remercie pour votre aide si precieuse

    <Page
        x:Class="App1_test_progressbar_gs1.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:App1_test_progressbar_gs1"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    
        <Grid Width="1500" Height="1000" Background="#FFCBD7DF" BorderBrush="#FF1C0B6B">
    
            <Grid.Resources>
                <Storyboard x:Name="monstoryboard">
                    <DoubleAnimation
                        Storyboard.TargetName="barre_temps"
                        Storyboard.TargetProperty="Value"
                        From="0" To="100"
                        Duration="0:0:5"/>
                </Storyboard>
            </Grid.Resources>
    
            <ProgressBar x:Name="barre_temps" Width="500" Height="50"/>
            <Button x:Name="btn_go" Width="150" Height="40" Background="#FFDB8127" VerticalAlignment="Center" HorizontalAlignment="Stretch" Margin="0,250,0,0" Content="depart temps" FontSize="20" Tapped="Btn_go_Tapped"/>
        </Grid>
    </Page>
    
    namespace App1_test_progressbar_gs1
    {
        /// <summary>
        /// Une page vide peut être utilisée seule ou constituer une page de destination au sein d'un frame.
        /// </summary>
        public sealed partial class MainPage : Page
        {
            public MainPage()
            {
                this.InitializeComponent();
            }
    
            private void Btn_go_Tapped(object sender, TappedRoutedEventArgs e)
            {
                monstoryboard.Begin();
            }
        }
    }
    

    mardi 10 septembre 2019 08:26

Réponses

  • Bonjour SIMONGEORGES,

    Il y a un moyen plus simple que le storyboard pour gérer une ProgressBar.

    J'ai modifié ton code XAML :

    x:Class="App1_test_progressbar_gs1.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:App1_test_progressbar_gs1"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    
        <Grid Width="1500" Height="1000" Background="#FFCBD7DF" BorderBrush="#FF1C0B6B">
            <ProgressBar x:Name="barre_temps" 
                         Width="500" Height="50"
                         IsIndeterminate="True"
                         Visibility="Collapsed"/>
            <Button x:Name="btn_go" Width="150" Height="40" Background="#FFDB8127" VerticalAlignment="Center" HorizontalAlignment="Stretch" Margin="0,250,0,0" Content="depart temps" FontSize="20" Tapped="Btn_go_Tapped"/>
        </Grid>

    Et le code behind :

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Runtime.InteropServices.WindowsRuntime;
    using System.Threading.Tasks;
    using Windows.Foundation;
    using Windows.Foundation.Collections;
    using Windows.UI.Core;
    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;
    
    // Pour plus d'informations sur le modèle d'élément Page vierge, consultez la page https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
    
    namespace App1_test_progressbar_gs1
    {
        /// <summary>
        /// Une page vide peut être utilisée seule ou constituer une page de destination au sein d'un frame.
        /// </summary>
        public sealed partial class MainPage : Page
        {
            public MainPage()
            {
                this.InitializeComponent();
            }
    
            private async void Btn_go_Tapped(object sender, TappedRoutedEventArgs e)
            {
                await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    barre_temps.Visibility = Visibility.Visible;
                });
                await Task.Delay(8000);
                barre_temps.Visibility = Visibility.Collapsed;
            }
        }
    }
    

    Le chiffre qui suit Task.Delay est le temps en msec.

    Attention : il faut ajouter des directives using pour ne pas avoir d'erreur.

    Bon courage.

    • Marqué comme réponse SIMONGEORGES vendredi 13 septembre 2019 09:53
    • Non marqué comme réponse SIMONGEORGES vendredi 13 septembre 2019 09:53
    • Marqué comme réponse SIMONGEORGES dimanche 15 septembre 2019 07:35
    jeudi 12 septembre 2019 14:53

Toutes les réponses

  • Bonjour SimonGeorges,

    Ta ProgressBar est bien définie dans le code XAML, mais rien ne lui dit qu'elle doit se déclencher.

    Personnellement, je le fais dans le code behind pour un ProgressRing de cette façon ;

    A l'initialisation de la page, je désactive le progressRing :

    MyProgressRing.IsActive = false;

    Puis le moment venu, je l'active de cette façon :

    await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    MyProgressRing.IsActive = true;
                });
    J'espère que cela pourra t'aider.

    mardi 10 septembre 2019 13:38
  • bonjour et merci de votre attention mais étant autodidacte je voudrais savoir où placer la désactivation du progressbar

    et je voudrais que le bouton l'active  avec le code du click   merci de m'aider  un rand merci

    jeudi 12 septembre 2019 08:59
  • Bonjour SIMONGEORGES,

    Il y a un moyen plus simple que le storyboard pour gérer une ProgressBar.

    J'ai modifié ton code XAML :

    x:Class="App1_test_progressbar_gs1.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:App1_test_progressbar_gs1"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    
        <Grid Width="1500" Height="1000" Background="#FFCBD7DF" BorderBrush="#FF1C0B6B">
            <ProgressBar x:Name="barre_temps" 
                         Width="500" Height="50"
                         IsIndeterminate="True"
                         Visibility="Collapsed"/>
            <Button x:Name="btn_go" Width="150" Height="40" Background="#FFDB8127" VerticalAlignment="Center" HorizontalAlignment="Stretch" Margin="0,250,0,0" Content="depart temps" FontSize="20" Tapped="Btn_go_Tapped"/>
        </Grid>

    Et le code behind :

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Runtime.InteropServices.WindowsRuntime;
    using System.Threading.Tasks;
    using Windows.Foundation;
    using Windows.Foundation.Collections;
    using Windows.UI.Core;
    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;
    
    // Pour plus d'informations sur le modèle d'élément Page vierge, consultez la page https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
    
    namespace App1_test_progressbar_gs1
    {
        /// <summary>
        /// Une page vide peut être utilisée seule ou constituer une page de destination au sein d'un frame.
        /// </summary>
        public sealed partial class MainPage : Page
        {
            public MainPage()
            {
                this.InitializeComponent();
            }
    
            private async void Btn_go_Tapped(object sender, TappedRoutedEventArgs e)
            {
                await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    barre_temps.Visibility = Visibility.Visible;
                });
                await Task.Delay(8000);
                barre_temps.Visibility = Visibility.Collapsed;
            }
        }
    }
    

    Le chiffre qui suit Task.Delay est le temps en msec.

    Attention : il faut ajouter des directives using pour ne pas avoir d'erreur.

    Bon courage.

    • Marqué comme réponse SIMONGEORGES vendredi 13 septembre 2019 09:53
    • Non marqué comme réponse SIMONGEORGES vendredi 13 septembre 2019 09:53
    • Marqué comme réponse SIMONGEORGES dimanche 15 septembre 2019 07:35
    jeudi 12 septembre 2019 14:53