|
Работа с на c# wpf decimal
|
|||
---|---|---|---|
#18+
Здравствуйте! Подскажите пожалуйста как правильно работать с decimal. Задача стоит следующая. Мне нужно сделать чтобы пользователь мог вводит TextBox числа с плавающей точкой или запятой. 0.2121 0,213 43, 4121. 0 null Я сделал так, но я думаю что это как-то не по фэншую. Код: xml 1. 2.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 09:28 |
|
Работа с на c# wpf decimal
|
|||
---|---|---|---|
#18+
Nechto, будь осторожен с конвертацией строки с числом с запятой или точкой в децимал - это зависит от региональных настроек компьютера. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 12:03 |
|
Работа с на c# wpf decimal
|
|||
---|---|---|---|
#18+
AxeleronNechto, будь осторожен с конвертацией строки с числом с запятой или точкой в децимал - это зависит от региональных настроек компьютера. Да это я учел, проверкой try catch. Есть еще какие нибудь способы работы с decimal а то не хочется городить велосипед. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 12:14 |
|
Работа с на c# wpf decimal
|
|||
---|---|---|---|
#18+
NechtoДа это я учел, проверкой try catch. Это нецелесообразно. Есть специально для этого конструкция decimal.TryParse. NechtoЕсть еще какие нибудь способы работы с decimal а то не хочется городить велосипед. А что конкретно интересует? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 12:17 |
|
Работа с на c# wpf decimal
|
|||
---|---|---|---|
#18+
NechtoЗдравствуйте! Подскажите пожалуйста как правильно работать с decimal. Задача стоит следующая. Мне нужно сделать чтобы пользователь мог вводит TextBox числа с плавающей точкой или запятой. 0.2121 0,213 43, 4121. 0 null Я сделал так, но я думаю что это как-то не по фэншую. Код: xml 1. 2.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
если пользователь введет не число, но значение не будет равно "NULL", следовательно Area не изменится, что будет не очень логичным, ведь пользователь видит изменение на экране, я бы задал значению Area сразу NULL, после этого, чтоб быть явно уверенным в том, что пользователь ввёл фигню. Во вторых ты переводишь текст в decimal не указывая культуру, если ты преобразуешь в запятые, то нужно использовать Invariant'ную культуру. А вообще для такого существуют Конвертеры, в нём и делается подмена . на , и обратно. как угодно ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 12:29 |
|
Работа с на c# wpf decimal
|
|||
---|---|---|---|
#18+
IValueConverter ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 13:14 |
|
Работа с на c# wpf decimal
|
|||
---|---|---|---|
#18+
Roman MejtesВо вторых В-третьих, отсутсвует нотификация пользователя о неверно введенном значении. Здесь не нужно изобретать велосипед - есть стандартные механизмы валидации. В-четвертых (хотя к теме топика и не относится) - налицо модель и вьюмодель в одном флаконе, что с т.з. каноничного MVVM не есть хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 13:15 |
|
Работа с на c# wpf decimal
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныRoman MejtesВо вторых В-третьих, отсутсвует нотификация пользователя о неверно введенном значении. Здесь не нужно изобретать велосипед - есть стандартные механизмы валидации. В-четвертых (хотя к теме топика и не относится) - налицо модель и вьюмодель в одном флаконе, что с т.з. каноничного MVVM не есть хорошо. Что то вы меня запутали. Где правильно использовать конвертор? Я так понимаю не в сущности. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 13:27 |
|
Работа с на c# wpf decimal
|
|||
---|---|---|---|
#18+
реализуешь IValueConverter и используешь в Binding'е {Binding Property1, Converter={StaticResource KeyMyConverter}} Твой вариант вполне имеет место быть, только нужно отделить мух от котлет, View (представление) нужно связывать не с модель данных, а с моделью представления. То есть, модель представления получает в качестве источника какие то данные и преобразует их в нужный формат и обратно, который будет наиболее удобен для отображения и редактирования, как в твоём случаи это преобразование из Decimal в String и обратно. Это может быть, нечто другое, данные к примеру приходят в формате Byte[] и ты их в модели представления преобразуешь в какую то пикчу или что то более сложно. В твоём конкретном случае это же самое можно сделать через IValueConverter не во ViewModel, а во View через конверторы связывания, либо через какой то Control типа MaskEditor' который ты сам напишешь :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 14:08 |
|
Работа с на c# wpf decimal
|
|||
---|---|---|---|
#18+
Суть работы интерфейса IValueConverter понял работает по концепции (get set). Осталось одно не ясно, как мне связать этот конвертер, с сущностью IDataErrorInfo. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 14:57 |
|
Работа с на c# wpf decimal
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Код: xml 1. 2. 3. 4. 5. 6. 7.
Сделал так, работает. Осталось только один косяк. К примеру, если пользователь вводит число и ставит разделитель [ 31, ], то разделитель пропадает и остается только число [ 31 ]. Разделитель можно поставить только в внутри числа [ 1561186.8 ], а это не правильно. Как это реализовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2016, 07:01 |
|
Работа с на c# wpf decimal
|
|||
---|---|---|---|
#18+
Решил проблему, теперь и с UpdateSourceTrigger=PropertyChanged работает! Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2016, 08:28 |
|
Работа с на c# wpf decimal
|
|||
---|---|---|---|
#18+
Есть у меня большие сомнения что ето работает для всех языков. Кстати а культуру в конвертере мс починил? Она туда совсем не та приходит, как ожидается. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 19:07 |
|
Работа с на c# wpf decimal
|
|||
---|---|---|---|
#18+
На vb.net но думаю понять можно, плюс додумать что еще надо сделать с binding (если его еще в 4.5 не починили) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 19:15 |
|
Работа с на c# wpf decimal
|
|||
---|---|---|---|
#18+
gpuЕсть у меня большие сомнения что ето работает для всех языков. Кстати а культуру в конвертере мс починил? Она туда совсем не та приходит, как ожидается. Все работает, без проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2016, 09:12 |
|
Работа с на c# wpf decimal
|
|||
---|---|---|---|
#18+
NechtogpuЕсть у меня большие сомнения что ето работает для всех языков. Кстати а культуру в конвертере мс починил? Она туда совсем не та приходит, как ожидается. Все работает, без проблем. Меняем региональные настройки на Германию и удивляемся. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 18:53 |
|
|
start [/forum/topic.php?fid=21&fpage=12&tid=1440683]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
53ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 235ms |
total: | 395ms |
0 / 0 |