如果我不打算显示SystemTray,我应该如何在Windows Phone 7应用程序中指出进度?

时间:2012-03-07 22:21:45

标签: windows-phone-7 progressdialog

我的WP7应用程序中有几项操作,我需要向最终用户表明需要一段时间。

在Android世界中,我会调用ProgressDialog,这会导致屏幕变暗,手机特定的微调动画以及我想要的任何消息在屏幕中间。

有些搜索表明在Windows Phone 7(Mango,无论如何)中执行此操作的正确方法是使用ProgressIndicator,因此我走了那条路。

问题是在我的应用程序中我不想看到系统托盘。我将它隐藏在XAML中,我想使用整个800x480,尽管我可以告诉ProgressIndicator不会飞,除非有可见的SystemTray。

有没有办法在没有SystemTray的情况下使用ProgressIndicator? (也就是说,它半透明地显示在应用程序的顶部,然后消失)失败了,是否还有其他任何预定义和已建立的方式来表示WP7中的ProgressDialog?

3 个答案:

答案 0 :(得分:2)

Coding4Fun有一个包含Windows Phone 7工具的库。该工具包包含ProgressOverlay控件。基本上,当你向它添加一个dll-reference并在你的XAML文件中添加一个引用时,你可以这样做:

<Controls:ProgressOverlay Name="progressOverlay" Margin="0" >
    <Controls:ProgressOverlay.Content>
        <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
            <ProgressBar IsIndeterminate="true" x:Name="customIndeterminateProgressBar" Style="{StaticResource CustomIndeterminateProgressBar}" />
        </StackPanel>
    </Controls:ProgressOverlay.Content>
</Controls:ProgressOverlay>

这会在您的布局上放置一个叠加层,并在屏幕中间显示ProgressBar。如果需要,您可以自己在StackPanel中添加控件。例如,带有文本'Loading ...'的TextBlock。您可以在CodePlex上找到下载。

希望这有帮助!

答案 1 :(得分:1)

您只需使用KraZ88所示的进度条。

只需将“ProgressBar”控件从“工具箱”拖动到您的页面即可。如果您可以看到这一点,则右键单击工具箱并选择“选择项目”。 “下一个”对话框显示可以使用但尚未使用的控件列表! :)。检查那里的'ProgressBar'控件,然后单击OK。

现在您将能够看到'ProgressBar'。

现在,Windows Phone 7.1有两个选项:

  • 向用户显示进度的“不确定”视图。意思是,他可能不知道剩下多少工作,但他知道工作正在进行中。

这可以通过在工作开始时将可见性属性最初设置为折叠并将其设置为可见来实现。接下来,设置 IsIndeterminate = true 。你的工作完成了一半。现在只需设置 progressBar1.Value + = progressBar1.SmallChange;

  • 下一步是通过计算向用户显示进度的准确视图。这意味着重新计算工作的每个迭代单元后留下的进度。

要实现此目的,您需要设置 IsIndeterminate = false ,然后根据您的依赖关系设置进度条的最大值和最小值,然后在每次迭代后重置进度条的值。这是一个开头的例子:

ProgressBar1.Maximum=array.Length;
ProgressBar1.Minimum=0;

for(int i =0;i<array.Lenght;i++)
{//some logic
progressBar1.Value +=1;
}

答案 2 :(得分:0)

您可以这样简单地使用不带系统托盘的进度条:

<ProgressBar IsEnabled="True" Height="5" Width="480"/>