3

我正在构建一个需要从 Internet 下载 RSS 数据的 Windows 8 应用程序。

有一个等待的 GetFeedsAsync() 方法负责此操作,在我的应用程序主页的(异步)LoadState 方法中调用。

我选择将该任务委托给后台线程:

await Task.Run(() => feedDataSource.GetFeedsAsync());

我想要的只是显示一个 ProgressRing 并使其保持活动状态,直到该过程完成并准备好显示下载的数据。

我在 XAML 中定义了 ProgressRing:

<ProgressRing  x:Name="LoadingProgressRing" IsActive="True"  Foreground="White" Margin="0,400,0,0" Width="80" Height="80" VerticalAlignment="Top"  Canvas.ZIndex="1" />

然后在代码隐藏中添加这两行:

LoadingProgressRing.IsActive = true;
await Task.Run(() => feedDataSource.GetFeedsAsync()); 
LoadingProgressRing.IsActive = false;

当应用程序启动时,它会导航到主页,其中 ProgressRing 显示 1 秒钟然后消失。数据下载在 20 秒后完成,然后按原样显示。

为什么 ProgressRing 会这样?我想不出任何理由让它变得不活跃,直到

LoadingProgressRing.IsActive = false;

命令被执行。

4

1 回答 1

2

尝试将Grid.Row="1"添加到您的 ProgressRing 元素,即:-

<ProgressRing  x:Name="LoadingProgressRing" IsActive="True"  Foreground="White" Margin="0,400,0,0" Width="80" Height="80" VerticalAlignment="Top"  Canvas.ZIndex="1" Grid.Row="1"  />

编辑

澄清一点-我遇到了进度条出现一秒钟然后消失的确切问题,这与等待无关,而是因为我没有为我的页面上的进度条指定网格行。

我的页面有两个行定义:

    <Grid.RowDefinitions>
        <RowDefinition Height="140"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
于 2012-11-17T20:34:54.093 回答