C# 是否可以在xamarin表单中从第一页访问到第二页的进度条?

C# 是否可以在xamarin表单中从第一页访问到第二页的进度条?,c#,xamarin,xamarin.forms,progress-bar,C#,Xamarin,Xamarin.forms,Progress Bar,是否可以这样做: 我在第一页有一个进度条,我将其设置为IsVisible=false 我在第一页中创建了一个依赖项方法 [程序集:依赖项(typeof(page.view.FirstPage))] 公共接口进展 { void StartProgress(); } 公共部分类首页:ContentPage { 公共首页() { } public void StartProgress() { //你在这儿进阶吗 并设置进度条 IsVisible=true; } } 并从第一页到第二页访问该方法 示例

是否可以这样做:

我在第一页有一个进度条,我将其设置为IsVisible=false

我在第一页中创建了一个依赖项方法

[程序集:依赖项(typeof(page.view.FirstPage))]
公共接口进展
{
void StartProgress();
}
公共部分类首页:ContentPage
{
公共首页()
{
}
public void StartProgress()
{
//你在这儿进阶吗
并设置进度条
IsVisible=true;
}
}
并从第一页到第二页访问该方法

示例我在第二页有一个按钮

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

然后,第一页中的进度条将开始运行。。。。但是我的代码不起作用

是的,您可以使用MessagingCenter来实现这一点。在第一页中,订阅一条消息:

      public FirstPage()
       {
         MessagingCenter.Subscribe<SecondPage>(this, "StartProgress", (sender) =>
          {
           StartProgress();
          }); 
        }
    
        public void StartProgress()
        {
            //do progression here
            //and set Progress bar 
               IsVisible = true;
        }
您可以在中找到文档

是否可以从第2页启动第1页的进度条?

是的,除了下面的答案之外,您还可以使用

Page1.Xaml

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

<StackLayout VerticalOptions="CenterAndExpand">
    <ProgressBar
        x:Name="ProgressBar1"
        Progress="1"
        ProgressColor="Red"
        IsVisible="False" />
    <Button Clicked="Button_OnClicked" Text="Click here"/>
</StackLayout>
    <StackLayout VerticalOptions="EndAndExpand">
        <Button Clicked="Button_OnClicked"  Text="Start Progress"/>
    </StackLayout>
注意:最好使用此方法而不是此方法

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