2012-03-07 47 views
0

我在我的WP7应用程序中有几项操作,我需要向最终用户指出需要一段时间。如果我不打算显示SystemTray,我应该如何在Windows Phone 7应用程序中指示进度?

在Android世界中,我会调用ProgressDialog,它会导致屏幕变暗,特定于手机的旋转动画以及屏幕中间所需的任何消息。

一些搜索表明,在Windows Phone 7(芒果,无论如何)中这样做的正确方法是使用ProgressIndicator,所以我走下了这条路。

问题是,在我的应用程序中,我不想看到系统托盘。我将它隐藏在XAML中,我想使用整个800x480,并且尽可能接近ProgressIndicator,除非有可见的SystemTray。

有没有办法使用ProgressIndicator没有SystemTray? (即,它显示,半透明,横跨应用程序的顶部,然后消失)如果没有,是否有任何其他预定义的方式指示WP7中的ProgressDialog?

回答

1

你可以简单的使用进度条如图KraZ88。

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

现在您将可以看到'ProgressBar'。

现在,你有两个选择随着Windows Phone 7.1:

  • 显示用户的进步的 '不确定' 视图。意思是说,他可能不知道很多工作已经完成,但他知道工作正在进行中。

这是通过简单的初始设定的时刻能见度属性折叠并将其设置为可见当你的工作开始实现。接下来,设置IsIndeterminate = true。你的工作已经完成了一半。现在只需设置progressBar1.Value + = progressBar1。小变化;

  • 下一个方法是通过计算向用户显示进度的准确视图。这意味着重新计算工作迭代的每一个单位后所取得的进展。

要做到这一点,你需要设置IsIndeterminate =假,然后设置最大,并根据您的依赖进度条的最小值,然后每次迭代后仅重置进度条的值。以下是一个示例:

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

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

我没有使用这个确切的东西,但它导致我沿着ProgressBar的这种变体的道路,也允许您显示文本:http://blogs.microsoft.co.il/blogs/arik/archive/2011 /01/27/a-progressbar-with-text-for-windows-phone-7.aspx – 2012-03-09 22:01:40

+0

幸福,它帮助:) – Nezam 2012-03-10 06:32:10

2

Coding4Fun有一个包含Windows Phone 7工具的库。该工具包包含ProgressOverlay控件。基本上,当你添加一个DLL的引用,并添加在您的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中自行添加控件。例如,带有“正在加载...”文本的TextBlock。你可以在CodePlex找到下载。

希望这会有所帮助!

+0

这是一个非常糟糕的主意,因为非本地进度指标有非常糟糕的表现,在Tango上表现更差。 – 2012-03-08 07:57:07

+0

@ClausJørgensen对于它的价值,我基本上使用它来掩盖Web服务调用的时间,并且该应用程序没有执行任何处理器密集型任务。 – 2012-03-08 15:54:10

0

你可以简单的使用ProgessBar没有SystemTray中以这样的方式

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

不是我所看到的。你有代码示例吗? – 2012-03-07 23:03:16

相关问题