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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

у Алексея много хорошего, но для простой формы оно вам вряд ли поможет. Только не делайте проверку "элементов", сделайте на уровне Mvvm
...
Рейтинг: 0 / 0
3 вопроса по WPF )
    #38554031
Фотография Esofter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
18 сообщений из 18, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / 3 вопроса по WPF )
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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