Windows 8 進度指示器分三類,定時器採 ThreadPoolTimer 非同步模式。
| 類型 | 適用情境 | 關鍵屬性 |
|---|---|---|
| ProgressBar (確定) | 已知進度百分比 | Value、Maximum、IsIndeterminate="False" |
| ProgressBar (不確定) | 未知進度,等待中 | IsIndeterminate="True" |
| ProgressRing | 環狀不確定進度 | IsActive="True" |
<!-- 確定進度條 -->
<ProgressBar Name="probar1" Maximum="100" Value="0" Height="20"
IsIndeterminate="False" Margin="275,167,966,581"/>
<!-- 不確定進度條 -->
<ProgressBar IsIndeterminate="True" Width="80" Height="10" Margin="600,167,566,591"/>
<!-- 不確定進度環 -->
<ProgressRing IsActive="True" Height="58" Width="67" Margin="1000,167,299,543"/>
private void Button_Click_1(object sender, RoutedEventArgs e) {
DelayTimer();
}
private void DelayTimer() {
ThreadPoolTimer.CreateTimer(async (timer) => {
await Dispatcher.RunAsync(CoreDispatcherPriority.High, () => {
probar1.Value += 20;
});
}, TimeSpan.FromMilliseconds(3000));
}
private void Button_Click_2(object sender, RoutedEventArgs e) {
PeriodicTimer();
}
private void PeriodicTimer() {
ThreadPoolTimer.CreatePeriodicTimer(async (timer) => {
await Dispatcher.RunAsync(CoreDispatcherPriority.High, () => {
probar1.Value = probar1.Value + 1;
});
}, TimeSpan.FromMilliseconds(100));
}
原始碼下載:Win8Progress.rar