Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Резюме для программиста

09.12.21 11:34
Re: Резюме для программиста
 
alex445 старожил
в ответ Программист 09.12.21 11:15, Последний раз изменено 09.12.21 11:43 (alex445)
1) надо сделать так, чтобы при эскейпе данные не обновлялись.
2) надо убедиться, что только открыто для редактирования не больше одной ячейки.
Возможно есть что-то еще.


Попробуй реализовать свою идею.

1. Байндинг можно настроить через UpdateSourceTrigger на любое изменение текста или только на полное редактирование. При полном редактировании (ваш эскейп, или потеря фокуса у меня, или нажатие энтер) идёт обновление байндинга. При эскейпе, как я понял, сохраняется старое значение, поэтому обновление модели не требуется. Так и не обновляйте её. В сеттере вью модели проверяете, изменилось ли значение, или осталось прежним, и соответственно принимаете решение об обновлении модели.


Если вы не хотите обновлять именно вью модель, то это лишнее непонятное требование. Но и это можно достигнуть. Просто логика сравнения нового и старого значения должна быть до вью модели. Так можно делать через конвертеры, например. Но это скорее костыль, а правильно - проверять во вью модели. Если во вью модели изменилось, но изменения в модель не ушли, то и в БД или откуда там вы данные брали тоже не уйдут. Это правильный подход при разработке многослойных приложений.


2. Так и делайте привязку свойств вью модели к отдельным текст боксам - будет по одной ячейке (свойству) за раз редактироваться.


Извините, реализовывать нет желания. )) По вашим описаниям идея банальная и для WPF точно не должна представлять трудностей. Или вы не все условия сказали. Ну и всегда есть вариант, что клиенту хочется слишком много странного, которое ему явно не нужно. Иногда бывает проще убедить клиента, что такая-то блаж реально ему не нужна, чем пытаться костылить это в своём фреймворке. Например, расспросить клиента про сценарии использования, и откуда эта блаж взялась. Может, он привык в какой-то другой программе к какому-то подходу, а там это тоже костыль был. И в вашем фреймворке вы, может быть, от этого костыля можете избавить как вашего клиента, так и себя.

 

Перейти на