Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2011, 18:35   #1
porfavof
 
Регистрация: 31.01.2011
Сообщений: 5
Восклицание Silverlight ProgressBar problem

Здрасте. Возникла проблема из ProgressBar'ом.
Выбираю .xls или .csv через File Dialog, читаю построчно, записываю в DataGrid, формулой пишеться проперти значения ProgressBar'a. Binding'ом соединяю UI ProgressBar element к проперти етой. Но после выборки файла UI полностю застывает, результат видно только после полной прочитки файла і ProgressBar Value уже = 100. Что я только не пробовал.. и через dispatcher разбудить елемент, и threadings новые делал и еще море способов... но от пока читається файл никак немогу обновить UI, хотя програмно все норм роботает. Need help.
porfavof вне форума Ответить с цитированием
Старый 28.07.2011, 10:33   #2
porfavof
 
Регистрация: 31.01.2011
Сообщений: 5
По умолчанию

Проблему сам решил.
Мой пример: после каждой прочитаной полной строки з .xls файла меняю ProgressBarValue property естессно в новом потоке.
Код:
var thr = new Thread(() =>
{
    for (int i = sheet.Cells.FirstRowIndex; i <= sheet.Cells.LastRowIndex; i++)
    {
        //...
        //some logic...
        //...
        ProgressBarValue = (current * 100) / count;    //Change a property
        Items.Add(item);
        ProgresBarValueChange();    //Fire the event that property has been changed
        Thread.Sleep(50);
    }
});
thr.Start();
В Code Behind подписуюсь под мой event, и делую след:

Код:
void _viewModel_ProgresBarValueChange()
{
    Dispatcher.BeginInvoke(() =>
    {
	progressBar1.Value = _viewModel.ProgressBarValue;

        //Также была вторая проблама обновлять мой DataGrid, решение след:
        //каждый раз обнуляю DataGrid.ItemsSource и присваиваю новое
        //значение моей колекции об'єктов которую я меняю в потоке в цыкле Items.Add(item);
	senderDataGrid.ItemsSource = null;
	senderDataGrid.ItemsSource = _viewModel.Items;				
    });
}
Я относительно недавно в Silverlight'e и делал все пальцем в небо, поетому незнаю, может есть лучшие варианты решения етой задачи, но всеже все роботает, может ето комуто поможет.

Последний раз редактировалось porfavof; 28.07.2011 в 11:00.
porfavof вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Try..except..problem Alex Cones Общие вопросы Delphi 6 29.06.2009 18:17
Xanoy! with smol problem artush1984 Общие вопросы C/C++ 1 27.04.2009 23:51
Static Void Problem RIO Общие вопросы .NET 2 02.05.2008 16:52