Как вы кодируете пульсатор («загружающий» или «ожидающий» рисунок) в WPF? - PullRequest
1 голос
/ 17 ноября 2010

Как вы кодируете эту «загрузочную» или «ожидающую» графику в WPF?

Если у кого-то была страница, требующая загрузки большого количества информации, обычно на флеш-сайте, вы видите какой-то круг, который повсеместно означает, что загружается много данных, и пользователь должен ждать .

Это больше, чем просто приятный эффект. Это имеет реальное применение в мире и важность. Если кто-то открывает форму или страницу или окно, у которого нет этой графики, и вместо этого видит форму, в которой должна быть отображена информация, но вместо этого видит пустые поля, его первое замечание может быть справедливым: информация не отображается. Это может быть правдой, даже если курсор переходит в режим ожидания. Обширные поля пустоты будут более присутствовать и подавлять изображение, чем курсор, который может находиться в каком-то вращающемся состоянии.

Полагаю, я мог бы что-то бросить вместе. Я полагаю, я мог бы представить GIF вращающегося круга, который отображается в начале, а затем скрыт после вызова всех методов загрузки данных. Но, возможно, есть какая-то общая общая графика, которую можно использовать бесплатно, и, не зная точно, как называется эта вещь, я не знаю, какое имя или фразу использовать для ее поиска. Как они называются?

Кроме того, возможно, что-то уже встроено в WPF или даже MVVM, который использует это. Есть? Кроме того, возможно, кто-то разработал способ сделать всю форму или страницу серыми и неактивными при отображении вращающегося круга и был любезен поделиться им. Это правда?

Ответы [ 5 ]

3 голосов
/ 17 ноября 2010

Насколько я понимаю, вы задаете кучу разных вопросов здесь. Итак, хотя мне обычно не нравится частичный ответ, вот он:

Но, может быть, есть какой-то общий общий графический для использования бесплатно и не зная точно, что это вещь называется, я не знаю, что имя или фраза для поиска один. Как они называются?

Я уверен, что в сети есть изображения, которые можно использовать без лицензионных платежей. Я бы, вероятно, искал «занятый курсор» или даже «песочные часы», поскольку до недавнего времени именно так их представляли основные операционные системы.

Кроме того, возможно, что-то уже есть встроить в WPF или WCF или даже MVVM который использует это. Есть ли?

Во-первых, нам лучше понять наши условия:

  • MVVM не имеет ничего «встроенного» в него, потому что это шаблон программирования, а не фреймворк. Существует множество реализаций , но я не знаю, содержат ли они какие-либо конкретные графические элементы. Может быть!
  • WCF - это Windows Communication Foundation, и его библиотеки почти наверняка не содержат графических элементов.
  • WPF - это Windows Presentation Foundation, и здесь вы найдете (или определите свои) графические элементы. Он содержит индикатор выполнения , но хотя вы можете настроить внешний вид любого элемента управления WPF, на самом деле он предназначен для отображения прогресса от начальной точки до конечной точки. Это может быть не то, что вы хотите. Тем не менее, WPF может отображать анимированные изображения. Вот пример из SO для отображения анимированных GIF-файлов .

Кроме того, возможно, кто-то разработал способ сделать всю форму или страницу серый и неактивный при отображении вращающийся круг и был добрым достаточно, чтобы поделиться этим. Это правда?

Почти наверняка. Опять же, есть множество подходов, которые вы можете использовать здесь. Некоторые из них упоминаются, например, в этом вопросе . Поиск «оверлеев» или «заставок» может указать вам правильное направление. Короче (в WPF):

  • Сделать страницу «неактивной», установив ее элементы управления Inactive и / или перехват Preview(Key|Mouse)Down событий
  • «Выделите серым» страницу, отображая поверх нее полупрозрачный элемент, такой как Grid или Rectangle. В зависимости от того, как вы это сделаете, он может также сделать базовые элементы управления «неактивными» (не цитируйте меня об этом, но я верю, что такой элемент, как Rectangle, будет перехватывать щелчки мыши, поэтому пользователь не может нажать на управление под ним ...)
1 голос
/ 18 ноября 2010

Используйте фонового работника, и для круглого индикатора выполнения в wpf см. http://www.codeproject.com/Articles/49853/Better-WPF-Circular-Progress-Bar.aspx для очень хорошего.

0 голосов
/ 18 ноября 2010

Вы можете просто использовать прикрепленные свойства

вот пост с полным примером кода (всего пара классов) http://www.deanchalk.me.uk/post/WPF-e28093-Loading-Spinner-Via-MVVM-and-Attached-Properties.aspx

Ваша основная Windows WPF будет просто выглядеть примерно так:

    <Window.Resources>
    <CollectionViewSource x:Key="DataList" Source="{Binding TestData}"  />
</Window.Resources>
<Grid Background="AliceBlue" app:AsyncNotifier.Trigger="{Binding IsDataLoading}" 
      app:AsyncNotifier.SpinnerText="Loading...">
    <TabControl Grid.RowSpan="2">
        <TabItem Header="TabItem">
            <Grid Background="#FFE5E5E5">
                <Grid.RowDefinitions>
                    <RowDefinition/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                <ListBox ItemsSource="{Binding 
                    Source={StaticResource DataList}}" />
                <Button Content="Do Update" HorizontalAlignment="Left" Command="{Binding LoadData}"
                        VerticalAlignment="Top" Width="75" Grid.Row="1" Margin="0,5" />
            </Grid>
        </TabItem>
        <TabItem Header="TabItem">
            <Grid Background="#FFE5E5E5"/>
        </TabItem>
    </TabControl>
</Grid>
0 голосов
/ 17 ноября 2010

Я не уверен, просто идея.Показать прозрачное модальное окно, которое содержит вращающийся круг, пока данные не будут загружены фоновым потоком.Когда данные загружены.закройте модальное окно.

0 голосов
/ 17 ноября 2010
...