Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / 3 вопроса по WPF ) / 18 сообщений из 18, страница 1 из 1
29.01.2014, 18:45
    #38542638
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
1 Нужно выполнить длительную операцию (секунд 20).
Хочется вынести это в отдельный поток, а на главной форме пустить какую то анимашку, прогрессбар бесконечный запустить.

Думаю всю задачу загрузить в Task. А вот как дальше ? Раз в секунду проверять, что Task завершился ?

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


2 Какой метод нужно вызвать в WPF приложении, чтобы текст на экране обновился ?
Т.е. я написал в TextBlock текст "выполняем операцию" и начал длительные действия. Экран при этом замораживается (см первый вопрос), и текст так и не появился.

3. Мне нужно указать пользователю на элемент, где ошибка и подписать "тут не выбрано".
Как это реализуется в WPF ? Примерный код посоветуйте.
PS. Программа без MVVM. При нажатии на кнопку я смотрю на значение полей, и вот нужно вывести ошибочный текст.
...
Рейтинг: 0 / 0
30.01.2014, 06:20
    #38542998
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
Я же тут давал ссылку.
...
Рейтинг: 0 / 0
30.01.2014, 19:55
    #38544197
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
Алексей К,

Спасибо. Я прочитал сейчас.

В общем Вашу ссылку я тогда смотрел, но не придал ей значения. Был занят проблемами с DLL.
Там просто довольно много текста и кода. Хотел, почитать подробней позже. Но не сложилось. Другим был занят тогда.

Сори :) Прикручу это в проект.

Каталог SspMainCommon / Common так и вовсе выглядит кладезью знаний ) Надо будет посмотреть там все классы.
...
Рейтинг: 0 / 0
30.01.2014, 20:13
    #38544211
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
Интересует какое рекомендуемое/стандартное решение в WPF для проверки ввода на форме и отображения информации с ошибкой.

Как вариант, рассматриваю простую проверку TextBlock.Text и выводить MessageBox в случае обнаружения на корректных данных.
Но хотелось бы все сделать по красивее, чем MessageBox.

В WinForm используется ErrorProvider - удобная вещь. Когда рядом с каждым элементом, с ошибкой, мигает красный значок и с текстом при наведении мышки.

Читаю в книге про использование ExceptionValidationRule, с привязкой его к биндингу. Также там описан DataErrorValidationRule Мак-Дональда в книге "Wpf4..."

В общем пока все кажется довольно запутанным и глобальным. Хотя там описано как сделать тоже самое, аналогичное ErrorProvider из WinForm - чтобы что-то отображалось рядом с ошибочным элементом, и выводился текст при наведении мышки. Причем это сделано с использованием ErrorTemplate, который, в свою очередь, использует adorner layer.....
В общем, все сложновато - неужели это стандартный/рекомендуемый вариант в WPF ?

Если да, и WPF программисты используют этот вариант, то ок, буду использовать тоже. Но может есть какие то альтеративы ? Может что то попроще ?
...
Рейтинг: 0 / 0
30.01.2014, 22:52
    #38544315
netivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
NTierNoob,

да стандратный вариант. Возьмите себе сразу ттемплейты для текста/комбо и тд. IDataError наше все :)
...
Рейтинг: 0 / 0
31.01.2014, 00:15
    #38544350
Monochromatique
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
NTierNoob аналогичное ErrorProvider из WinForm - чтобы что-то отображалось рядом с ошибочным элементом, и выводился текст при наведении мышки. Причем это сделано с использованием ErrorTemplate, который, в свою очередь, использует adorner layer.....
В общем, все сложновато - неужели это стандартный/рекомендуемый вариант в WPF ?

Если да, и WPF программисты используют этот вариант, то ок, буду использовать тоже. Но может есть какие то альтеративы ? Может что то попроще ?

Если вам не нужен MVVM - то зачем вам WPF? Что вы вообще берете от WPF?
...
Рейтинг: 0 / 0
31.01.2014, 06:38
    #38544444
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
NTierNoobВ общем, все сложновато - неужели это стандартный/рекомендуемый вариант в WPF ?
Да. Кое-кого предупреждали, что изучение WPF нужно начинать изучать вовсе не с RX. Заранее советую принять тот факт, что всё начнет более-менее раскладываться по полочкам и быть понятным где-то через полгода интенсивных занятий.
NTierNoobНо может есть какие то альтеративы ? Может что то попроще ?
WinForms. Или дельфи.
...
Рейтинг: 0 / 0
31.01.2014, 16:48
    #38545440
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
Дайте пожалуйста код. Особенно интересует, как вывести рядом с ошибочным элементом симпатичный признак ошибки, с выводом сообщения при наведении на значек.

Т.е. поделитесь пожалуйста ErrorteTplate. И желательно кодом.
Т.к. в книге Мак-Дональда то описан пример, но он больше похож на учебный пример.
...
Рейтинг: 0 / 0
31.01.2014, 18:27
    #38545565
netivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
NTierNoob,

ну вот вам пример для текстБокса:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
<Style x:Key="ExceptionValidationStyle" TargetType="{x:Type TextBox}">
		<Setter Property="Validation.ErrorTemplate" Value="{StaticResource ExceptionErrorTemplate}" />
		<Style.Triggers>
			<Trigger Property="Validation.HasError" Value="true">
				<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].Exception}" />
			</Trigger>
		</Style.Triggers>
	</Style>


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<ControlTemplate x:Key="ExceptionErrorTemplate">
		<DockPanel LastChildFill="True">
			<Border x:Name="border"
			        Margin="3"
			        BorderBrush="{StaticResource ErrorBorderBrush}"
			        BorderThickness="1"
			        CornerRadius="3">
				<Grid>

					<AdornedElementPlaceholder x:Name="MyAdorner" />
					<Image x:Name="errorImage"
					       Margin="0,0,-26,0"
					       HorizontalAlignment="Right"
					       Source="ваш путь к картинке"
					       Stretch="None"
					       ToolTip="{Binding ElementName=MyAdorner,
					                         Path=AdornedElement.(Validation.Errors)[0].Exception}" />
				
				</Grid>
			</Border>
		</DockPanel>

	</ControlTemplate>
...
Рейтинг: 0 / 0
31.01.2014, 19:11
    #38545611
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
netivan,

Спасибо за помощь !
Тогда пожалуй заменю сделанный по быстрому вывод MessageBox на "Wpf-стайл обработчик ошибок" :)
...
Рейтинг: 0 / 0
31.01.2014, 22:27
    #38545704
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
Появился вопрос.

Как сделать, чтобы отображение наличия ошибки включалось не сразу при открытии формы, а когда то позже - когда пользователь попытается сохранить данные.
Есть форма с двумя полями. Мне нужно чтобы они не были пустыми.
Но при создании формы там ничего не будет, очевидно.
Нужно, чтобы TemplateError появился лишь после того, как пользователь нажмет кнопку "Сохранить".
...
Рейтинг: 0 / 0
01.02.2014, 15:18
    #38545931
Monochromatique
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
NTierNoob,

Вы не пробовали там... Почитать чего-нибудь?
...
Рейтинг: 0 / 0
03.02.2014, 13:16
    #38547100
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
MonochromatiqueNTierNoob,

Вы не пробовали там... Почитать чего-нибудь?

Читаю. И в процессе пишу )
Может я что то упустил, плохо прочитал. Извините.

Но подскажите, как это сделать.
Тригерами может ? Или программным включение кода по нажатию на кнопку "Сохранить" ?
...
Рейтинг: 0 / 0
03.02.2014, 15:47
    #38547343
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
NTierNoob,

Так как сделать ПРАВИЛЬНО ? а не моими догадками и изобретательством велосипеда )
...
Рейтинг: 0 / 0
03.02.2014, 19:29
    #38547655
netivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
NTierNoob,

а что такого? пользователь открыл форму и сразу видит обязательные поля. А кнопка сохранить может вообще быть disable до этого момента
ЗЫ CanExecute у ICommand
...
Рейтинг: 0 / 0
03.02.2014, 22:25
    #38547832
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
netivan,

Спасибо Вам за помощь !

Пожалуй действительно, можно оставить так. У меня всего 4 элемента на форме для ввода. Остальное уже выбирается из гридов - т.к. программа, сама по себе, вспомогательная. Программа запущена постоянно, и, по сути, ErrorTemplate на пустых полях будет виден только 1 раз, при запуске приложения :)) Дальше пользователь лишь меняет часть параметров. Тут уже и пригодится ШаблонОшибки.

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

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

Смотрю "Простое решение" от Алексей К.
Масштабный проект. Если уж это - постое решение, не хотел бы я увидеть "Очень невероятно и даже еще более сложное Решение" :)
Но вообще много интересного. Любой новичек сам, долго доходил бы до этих деталей.
...
Рейтинг: 0 / 0
03.02.2014, 23:21
    #38547885
netivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
NTierNoob,

у Алексея много хорошего, но для простой формы оно вам вряд ли поможет. Только не делайте проверку "элементов", сделайте на уровне Mvvm
...
Рейтинг: 0 / 0
07.02.2014, 19:28
    #38554031
Esofter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 вопроса по WPF )
NTierNoob1 Нужно выполнить длительную операцию (секунд 20).
Хочется вынести это в отдельный поток, а на главной форме пустить какую то анимашку, прогрессбар бесконечный запустить.

Думаю всю задачу загрузить в Task. А вот как дальше ? Раз в секунду проверять, что Task завершился ?

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

http://wpftoolkit.codeplex.com/wikipage?title=BusyIndicator&referringTitle=Home

2 Какой метод нужно вызвать в WPF приложении, чтобы текст на экране обновился ?
Т.е. я написал в TextBlock текст "выполняем операцию" и начал длительные действия. Экран при этом замораживается (см первый вопрос), и текст так и не появился.

Dispatcher.Invoke()

3. Мне нужно указать пользователю на элемент, где ошибка и подписать "тут не выбрано".
Как это реализуется в WPF ? Примерный код посоветуйте.
PS. Программа без MVVM. При нажатии на кнопку я смотрю на значение полей, и вот нужно вывести ошибочный текст.

IDataErrorInfo
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / 3 вопроса по WPF ) / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]