Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [WPF] Как лучше всего сделать "Загрузка", показать табличку в надписью пока грузит 
V
    Опции темы
Kefir
Дата 4.1.2008, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 2
Всего: 87



Итак, представим ситуацию. Синхронный метод X работает долго. Надо сделать так, чтобы в это время выскакивал попап с надписью "Погоди, гружу". Есть в WPF очень удобный контрол под названием Popup. И всё вроде хорошо, только вот как известно УИ не апдейтится во время исполнения функции. Код ведь по сути прост:

Код

myPopup.IsOpen = true;
syncMethod();
myPopup.IsOpen = false;

вот и получается что изменение IsOpen так и не показывает попап. Отсюда и вопрос - как сделать такой вот "экранчик загрузки"? Попап удобен тем, что он лежит на самом контроле, что есть удобно.
вариант с открытием нового Window знаю - не предлагать. мороки многовато (хотя альтернативы пока не знаю).
PM MAIL WWW Skype   Вверх
mr.DUDA
Дата 4.1.2008, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



А в WPF нет аналога Application.DoEvents ?


--------------------
user posted image
PM MAIL WWW   Вверх
Kefir
Дата 4.1.2008, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 2
Всего: 87



Этот аналог надо изобретать (то есть как такового официально его нет, но можно симитировать). Это было сделано по каким-то страшным причинам (не помню объяснения). http://shevaspace.spaces.live.com/blog/cns...06954!526.entry даже есть рабочий код. Но опять же, я думал, что может быть есть что-то человеческое, то есть без воркэраундов...
PM MAIL WWW Skype   Вверх
mr.DUDA
Дата 4.1.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Kefir, скорее всего лучше тебя в WPF тут мало кто шарит, придётся выкручиваться самому... Технология молодая, спецов мало...  smile

Добавлено через 35 секунд
З.Ы. могу ошибаться, спецы ау-уу !  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
Kefir
Дата 4.1.2008, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 2
Всего: 87



короче пока что остановился на
Код

using System;
using System.Threading;
using System.Windows;
using System.Windows.Threading;

namespace Sheva.Windows
{
    public class WpfApplication : Application
    {
        public static void DoEvents()
        {
            Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new ThreadStart(delegate { }));
        }
    }
}

с вышеприведённого сайта. выбирая между новым окном и этим насилием остановился на (как мне кажется) меньшем из зол.
PM MAIL WWW Skype   Вверх
HalkaR
Дата 7.1.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: 14
Всего: 42



Kefir, а почему нельзя сделать синхронный метод асинхронным? BackgroundWorker в WPF есть.
PM MAIL   Вверх
Kefir
Дата 7.1.2008, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 2
Всего: 87



Не хочется этого делать в общем то лишь потому, что для конкретной задачи это в определённой степени усложнит и так не простую логику программы. А вообще меня интересовал как раз таки конкретный вопрос в случае с синхронным методом, а не то можно или нельзя превратить его в асинхронный (и так ясно что с тредами всё возможно  smile ). Это одна из тех ситуаций, когда мне кажется, что можно сделать проще (т.е. ситуация а-ля "я знаю несколько способов решения проблемы  smile , но хочется узнать нет ли более простого").  smile 

Это сообщение отредактировал(а) Kefir - 7.1.2008, 14:12
PM MAIL WWW Skype   Вверх
RWander
Дата 7.1.2008, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: 1
Всего: 6



Цитата(mr.DUDA @  4.1.2008,  16:19 Найти цитируемый пост)
efir, скорее всего лучше тебя в WPF тут мало кто шарит


[offtop]
Наверно уже пора новый раздел создавать "WPF" =) а то все темы по WPF скоро в Windows Forms лепить будут
[/offtop]



Это сообщение отредактировал(а) RWander - 7.1.2008, 16:48


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
Kefir
Дата 7.1.2008, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 2
Всего: 87



В общем ясно, что вряд ли кто-то ещё что-то предложит. За сим тему помечаю отвеченной.
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0473 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.