2 votes

Est-il possible d'accéder à la barre de progression de la première page à la deuxième page dans les formulaires xamarin ?

Est-il possible de le faire ?

J'ai une barre de progression sur la première page et je l'ai définie comme IsVisible = false.

J'ai créé une méthode de dépendance dans la première page.

[assembly:Dependency(typeof(page.view.FirstPage))]
public interface Progress
{
    void StartProgress();
}

public partial class FirstPage : ContentPage
{
    public FirstPage()
    {

    }

    public void StartProgress()
    {
        //do progression here
          and set Progress bar 
           IsVisible = true;
    }
}

et accéder à la méthode de FirstPage à SecondPage

Par exemple, j'ai un bouton sur la deuxième page

private void Onpress(s, e)
{
    DependencyService.Get<Progress>().StartProgress();
    Navigation.PopToRootAsync();
}

alors la barre de progression de la première page commencera à fonctionner.... Mais mon code ne fonctionne pas

2voto

Oui, vous pouvez utiliser MessagingCenter pour cela. Dans votre première page, inscrivez un message :

      public FirstPage()
       {
         MessagingCenter.Subscribe<SecondPage>(this, "StartProgress", (sender) =>
          {
           StartProgress();
          }); 
        }

        public void StartProgress()
        {
            //do progression here
            //and set Progress bar 
               IsVisible = true;
        }

Et dans votre deuxième page, envoyez le message :

 private void Onpress(s, e)
{
   MessagingCenter.Send(this, "StartProgress");
    Navigation.PopToRootAsync();
}

Vous trouverez de la documentation dans ici .

1voto

Anas Alweish Points 1448

Est-il possible de faire démarrer la barre de progression de la page1 à partir de la page2 ?

Oui, en plus de la réponse ci-dessous, vous pouvez utiliser Commandes pour ce faire

Page1.Xaml

<StackLayout VerticalOptions="CenterAndExpand">
    <ProgressBar
        x:Name="ProgressBar1"
        Progress="1"
        ProgressColor="Red"
        IsVisible="False" />
    <Button Clicked="Button_OnClicked" Text="Click here"/>
</StackLayout>

Page1.Cs

    public static Command StartProgressCommand;
    public Page1()
    {
        InitializeComponent();
        StartProgressCommand = new Command(() => { ProgressBar1.IsVisible = true; });
    }
    private void Button_OnClicked(object sender, EventArgs e)
    {
       Navigation.PushModalAsync( new Page2());
    }

Page2.Xaml

    <StackLayout VerticalOptions="EndAndExpand">
        <Button Clicked="Button_OnClicked"  Text="Start Progress"/>
    </StackLayout>

Page2.Cs

   private void Button_OnClicked(object sender, EventArgs e)
    {
        Page1.StartProgressCommand.Execute(null);
        Navigation.PopModalAsync(true);
    }

Note : Il est préférable d'utiliser Modèle Mvvm de faire ceci au lieu de cela

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X