Xamarin ProgressBar始终为100%

问题描述 投票:0回答:1

我有问题。我试图使用ProgressBar,所以我创建了以下代码:

ProgressBar progressBar;

public MyPage()
{
    InitializeComponent();

    ContentView LoadingView = new ContentView
    {
        VerticalOptions = LayoutOptions.FillAndExpand,
        HorizontalOptions = LayoutOptions.FillAndExpand,
        BackgroundColor = Color.Transparent
    };

    progressBar = new ProgressBar
    {
        ProgressColor = Color.FromHex("#3897F0"),
        HorizontalOptions = LayoutOptions.FillAndExpand,
        HeightRequest = 30
    };

    RelativeLoadingLayout.Children.Add(LoadingView,
            Constraint.RelativeToParent((parent) =>
            {
                return (0);
            }),
            Constraint.RelativeToParent((parent) =>
            {
                return (0);
            }),
            Constraint.RelativeToParent((parent) =>
            {
                return parent.Width;
            }), Constraint.RelativeToParent((parent) =>
            {
                return parent.Height;
            }));

    LoadingView.Content = progressBar;

    MemeProgressBar.Progress = 0.8;
    Task.Run(async () => await UpdateProgressBar(0.8, 2000));
    MemeProgressBar.Progress = 1;
    Task.Run(async () => await UpdateProgressBar(1, 4000));
}

async Task UpdateProgressBar(double Progress, uint time)
{
    MemeProgressBar.ProgressTo(Progress, time, Easing.Linear);
}

但是当页面加载时,ProgressBar已满。我创建了一个自定义的空隙,该空隙应设置加载的动画。

我在做什么错?

c# xamarin xamarin.forms xamarin.android xamarin.ios
1个回答
0
投票

我可以看到您将进度手动设置为1,因此当然总是为1。不能真正呈现页面,它只是初始化XAML中定义的对象,因此进度条可能在页面呈现之前就完成了更新。

如果完成特定任务后需要执行此代码,请尝试使用ContinueWith()方法,或者只是等待它,您的呼叫,我个人更喜欢异步等待模式

© www.soinside.com 2019 - 2024. All rights reserved.