Как мне указать прогресс в приложении Windows Phone 7, если я не собираюсь показывать SystemTray? - PullRequest
0 голосов
/ 08 марта 2012

У меня есть пара операций в моем приложении WP7, которые я должен указать конечному пользователю, что это заняло некоторое время.

В мире Android я бы назвал ProgressDialog, который заставляет экран тускнеть и анимацию вращающегося устройства для конкретного телефона, а также любое сообщение, которое я хочу, в середине экрана.

Некоторые поиски показывают, что правильный способ сделать это в Windows Phone 7 (во всяком случае, Mango) - использовать ProgressIndicator , поэтому я пошел по этому пути.

Проблема в том, что в моем приложении я не хочу видеть системный трей.Я прячу его в XAML и хочу использовать все 800x480, и насколько я могу судить, ProgressIndicator не летает, если нет видимого SystemTray.

Есть ли способ использовать ProgressIndicator без SystemTray?(то есть он просвечивает через верх приложения и затем исчезает). Если это не так, существуют ли другие предопределенные и установленные способы обозначения чего-то вроде ProgressDialog в WP7?

Ответы [ 3 ]

2 голосов
/ 08 марта 2012

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 .

Надеюсь, это поможет!

1 голос
/ 09 марта 2012

Вы можете просто использовать индикатор выполнения, как показано на KraZ88.

Просто перетащите элемент управления «ProgressBar» из панели инструментов на свою страницу. Если вы видите это, щелкните правой кнопкой мыши на панели инструментов и выберите «Выбрать элементы». Диалоговое окно «Далее» показывает список элементов управления, которые вы можете использовать, но не использовали! :). Проверьте там элемент управления «ProgressBar» и нажмите «ОК».

Теперь вы сможете увидеть «ProgressBar».

Теперь у вас есть два варианта с Windows Phone 7.1:

  • Показать пользователю «неопределенное» представление о прогрессе. Это означает, что он может не знать, что большая часть работы оставлена, но он знает, что работа выполняется.

Это достигается путем простого задания для свойства Visibility значения Collapsed и установки для него значения Visible в начале работы. Затем установите 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;
}
0 голосов
/ 08 марта 2012

Вы можете просто использовать ProgessBar без SystemTray следующим образом:

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