powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / ValidationRule использование при вставке данных
14 сообщений из 14, страница 1 из 1
ValidationRule использование при вставке данных
    #37946144
Nicky_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем добрый день!
есть правило:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    public class NotEmptyStringRule : ValidationRule
    {
        public string FieldName { get; set; }

        public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
        {
            return string.IsNullOrEmpty((string)value) ? new ValidationResult(false, "Значение " + FieldName +
                " должно быть заполнено") : ValidationResult.ValidResult;
        }
    }


В диалоговом окне происходит добавление/редактирование информации о человеке.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
            <TextBox Name="txtBoxFirstName" Margin="7,5,7,5" Grid.Column="1">
                <TextBox.Text>
                    <Binding Path="FirstName" NotifyOnValidationError="True" UpdateSourceTrigger="PropertyChanged">
                        <Binding.ValidationRules>
                            <valid:NotEmptyStringRule FieldName="FirstName" />
                        </Binding.ValidationRules>
                    </Binding>
                </TextBox.Text>
            </TextBox>


Если информация редактируется, правило срабатывает, а если происходит добавление - и пользователь даже не заходил в поле txtBoxFirstName - правило молчит (оно и понятно: не было сработки PropertyChanged).
Конечно, можно использ. IDataErrorInfo (в этом случае textBox в красной рамке уже при старте диалогового окна, что тоже плохо: пользователь еще ничего не ввел, а ему уже поле ввода загнали в красную рамку), однако хотелось бы воспольз. универсальным правилом NotEmptyStringRule.
Можно, конечно, при нажатии на кнопку ОК, проверять TextBox на пустую строку и принудительно присваивать значение пустой строки TextBox'у, что тоже как-то коряво.

Есть идеи для решения по-элегантнее предложенных?
...
Рейтинг: 0 / 0
ValidationRule использование при вставке данных
    #37946440
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас сделано присоединяемое свойство. На событие Loaded пробегаем по всем DependencyProperty всех элементов визуального дерева и делаем UpdateSource соответствующим биндингам. Проще решения вроде как нет.
...
Рейтинг: 0 / 0
ValidationRule использование при вставке данных
    #37946788
Nicky_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КУ нас сделано присоединяемое свойство. На событие Loaded пробегаем по всем DependencyProperty всех элементов визуального дерева и делаем UpdateSource соответствующим биндингам. Проще решения вроде как нет.

Спасибо за совет.
А какой способ у Вас выбран для сообщения пользователям об ошибках?
...
Рейтинг: 0 / 0
ValidationRule использование при вставке данных
    #37946879
Nicky_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопрос: почему так не работает?
Код: c#
1.
2.
3.
4.
5.
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            BindingExpression be = this.GetBindingExpression(Window.DataContextProperty);
            //be.UpdateSource();
        }


чтобы не обходить все DependencyProperty всех эл-тов.
...
Рейтинг: 0 / 0
ValidationRule использование при вставке данных
    #37947200
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КУ нас сделано присоединяемое свойство. На событие Loaded пробегаем по всем DependencyProperty всех элементов визуального дерева и делаем UpdateSource соответствующим биндингам. Проще решения вроде как нет.

Проще всю эту машинерию с валидацией перенести в Моdel или ViewModel и при создании объекта, вызывать метод для проверки всех правил.
...
Рейтинг: 0 / 0
ValidationRule использование при вставке данных
    #37947367
Nicky_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

я с wpf недавно - mvvm нахрапом не осилил, вот разбираюсь по чуть-чуть, то с одним аспектом, то с другим, вот до валидации уже дошел )
...
Рейтинг: 0 / 0
ValidationRule использование при вставке данных
    #37947544
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри готовые фреймворки
...
Рейтинг: 0 / 0
ValidationRule использование при вставке данных
    #37947719
Nicky_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

Prism?
...
Рейтинг: 0 / 0
ValidationRule использование при вставке данных
    #37948049
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nicky_NА какой способ у Вас выбран для сообщения пользователям об ошибках?ErrorTemplate. Собственно, ради этого всё и затевалось. :-)

SeVaАлексей КУ нас сделано присоединяемое свойство. На событие Loaded пробегаем по всем DependencyProperty всех элементов визуального дерева и делаем UpdateSource соответствующим биндингам. Проще решения вроде как нет.

Проще всю эту машинерию с валидацией перенести в Моdel или ViewModel и при создании объекта, вызывать метод для проверки всех правил.Сущности часто кодогенерированные. Показалось, что проще это организовать валидаторами во View.
...
Рейтинг: 0 / 0
ValidationRule использование при вставке данных
    #37948223
Nicky_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

я хотел спросить как раз о виде ErrorTemplate - красная рамка, ToolTip, TextBlock с текстом ошибки чуть ниже эл-та управления?
...
Рейтинг: 0 / 0
ValidationRule использование при вставке данных
    #37949306
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nicky_NSeVa,

Prism?

их много
...
Рейтинг: 0 / 0
ValidationRule использование при вставке данных
    #37949793
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nicky_NАлексей К,

я хотел спросить как раз о виде ErrorTemplate - красная рамка, ToolTip, TextBlock с текстом ошибки чуть ниже эл-та управления?Можно сделать самому какой нравится.
...
Рейтинг: 0 / 0
ValidationRule использование при вставке данных
    #37950509
Nicky_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaNicky_NSeVa,

Prism?

их много

Да уж, действительно много. Как я понял, основные:
1. MVVM Light Toolkit.
2. Prism.
3. WPF Application Framework.

Однако не нашел статистику использования каждого, какой из низ популярнее?
...
Рейтинг: 0 / 0
ValidationRule использование при вставке данных
    #37950621
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nicky_N, какая разница кто популярней? На вкус и цвет...
Начни с prism и calibur, все остальное - вариации
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / ValidationRule использование при вставке данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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