Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для INexteR
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468

Приложение MVVM. Ограничение пользовательского ввода для численных свойств

26.02.2023, 14:59. Показов 622. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В этой теме обсуждается только вопрос по ограничению пользовательского ввода.
Основная тема: Приложение MVVM. VMs и навигация
Элд Хасп, Теперь давайте запретим пользователю вводить в поля цена/количество на складе нечисловые значения. Что для этого нужно?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.02.2023, 14:59
Ответы с готовыми решениями:

Переключение между полями и ограничение пользовательского ввода
Здравствуйте. Подскажите как организовать следующую задачу на примере базового фрагмента. import tkinter from tkinter import* ...

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

Маска ввода для поля TextBox по шаблону MVVM
Привет, есть поля TextBox для ввода телефона, паспортных данных и т.д. Как наиболее правильно реализовать проверку по маске ввода не...

9
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,037
Записей в блоге: 2
26.02.2023, 16:47
Цитата Сообщение от INexteR Посмотреть сообщение
запретим пользователю вводить в поля цена/количество на складе нечисловые значения.
Для целых - достаточно привязки с UpdateTrigggerSource=PropertyChanged.
Для не целых в таком решении проявляются проблемы с вводом десятичной точки.
Проверьте как работает такое решение.
Если проблема десятичной точки не актуальна, то остановимся на этом.
0
 Аватар для INexteR
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
26.02.2023, 16:53  [ТС]
Элд Хасп, я хотел, чтобы нечисловые значения вообще не вводились. Нецелочисленный ввод не будем рассматривать
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,037
Записей в блоге: 2
26.02.2023, 17:47
Цитата Сообщение от INexteR Посмотреть сообщение
чтобы нечисловые значения вообще не вводились. Нецелочисленный ввод не будем рассматривать
Тогда просто добавьте UpdateTrigggerSource=PropertyChanged в привязку.
0
 Аватар для INexteR
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
26.02.2023, 20:38  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Тогда просто добавьте UpdateTrigggerSource=PropertyChanged в привязку.
В какую привязку, что-то не пойму. Те поля, в которые вводятся значения, без привязок. Но к ним привязываются DP свойства, которые находятся в ProductsViewSource

Добавлено через 14 минут
Поля
XML
1
2
3
4
5
6
7
8
9
10
11
12
<StackPanel>
    <TextBlock Text="Название" />
    <TextBox x:Name="name" />
    <TextBlock Text="Описание" />
    <TextBox x:Name="description" />
    <TextBlock Text="Производитель" />
    <TextBox x:Name="manufacturer" />
    <TextBlock Text="Цена" />
    <TextBox x:Name="cost" />
    <TextBlock Text="Наличие на складе" />
    <TextBox x:Name="quantityInStock" />
</StackPanel>
и представление коллекции
XML
1
2
3
4
5
6
7
8
9
<root:ProductsViewSource x:Key="productsView"
                         Source="{Binding Products}"
                         SortDirection="{Binding SelectedValue, ElementName=sort}"
                         ManufacturerId="{Binding SelectedValue, ElementName=filter}"
                         ProductName="{Binding Text, ElementName=name}"
                         ProductDescription="{Binding Text, ElementName=description}"
                         ManufacturerName="{Binding Text, ElementName=manufacturer}"
                         ProductCost="{Binding Text, ElementName=cost}"
                         ProductQuantityInStock="{Binding Text, ElementName=quantityInStock}" />
Как здесь поможет UpdateSourceTrigger и где он нужен?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,037
Записей в блоге: 2
26.02.2023, 20:49
Цитата Сообщение от INexteR Посмотреть сообщение
Как здесь поможет UpdateSourceTrigger и где он нужен?
C#
157
158
159
160
161
        public int ProductCost
        {
            get => (int)GetValue(ProductCostProperty);
            set => SetValue(ProductCostProperty, value);
        }
XML
189
190
                        <TextBlock Text="Цена" />
                        <TextBox x:Name="cost" Text="{Binding ProductCost, Source={StaticResource productsView}, UpdateSourceTrigger=PropertyChanged}" />
1
 Аватар для INexteR
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
26.02.2023, 21:11  [ТС]
Элд Хасп, ага, то есть привязка переместилась. Ясно
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,037
Записей в блоге: 2
26.02.2023, 22:17
Цитата Сообщение от INexteR Посмотреть сообщение
то есть привязка переместилась. Ясно
Можно ещё обработчик в TextBox задать который отсекать нецифровые клавиши.
Ограничивать ввод с клавиатуры букв wpf
0
 Аватар для INexteR
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
27.02.2023, 10:44  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Можно ещё обработчик в TextBox задать который отсекать нецифровые клавиши.
Хорошее решение. А я почему-то думал добавить поведение
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,037
Записей в блоге: 2
27.02.2023, 10:54
Цитата Сообщение от INexteR Посмотреть сообщение
А я почему-то думал добавить поведение
Можно и поведение, но в нём будет та же самая логика.
В данном случае хелпер с обработчиком мне кажется проще и удобнее.
Вот если бы было задействовано несколько свойств, событий, то, конечно, пришлось бы писать AP-свойство, Behavior или Расширение Разметки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.02.2023, 10:54
Помогаю со студенческими работами здесь

Ограничение для поля ввода
Как сделать чтобы в поле для ввода нельзя было вводить число меньше 0.3 (например)

Ограничение ввода для 16-ричных чисел
У меня курсовой проект. Нужно сделать, чтобы в textBox1 можно было вводить 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Помогите,...

Триггер, для ограничение ввода данных
Здравствуйте, не могу вообще понять как сделать данное условие.... Хочу задать условия («Чтобы нельзя было указывать в таблица...

Приложение для просмотра свойств медиа файлов
Есть ли прога для андроида, показывающая полный список свойств малтимедиэ-файла? media info отказывается запускаться, нужен аналог без...

MVVM, правильная привязка вспомогательных свойств
Есть Model, которая помимо прочего содержит коллекцию для отображения в таблице. //Некая сложная модель данных public class...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru