Чтобы перейти к последней части вашего вопроса: Это - дискуссия о WPF Disciples, которая выдвигает идею, что M-V-VM отрицает большинство потребности в конвертерах; что ViewModel должен представить данные в виде, подходящим для этого представления.
Зачем писать отдельный класс, реализовывать IValueConverter, конкретизировать методы Convert
и ConvertBack
, просто чтобы получить Int32 для Color, когда вы могли бы просто заставить виртуальную машину выставлять свойство Color в первую очередь, верно?
Я полагаю, что ответ на этот вопрос зависит от того, насколько вы религиозны в отношении разделения между View и ViewModel ... Я начинаю думать, что ViewModel должна просто представлять модель и применять к ней бизнес-правила, и должна «View Agnostic», и, возможно, для управления ViewModel специально для вашего View требуется промежуточный уровень, поэтому, если вы когда-нибудь поменяете свой View (по каким-либо причинам!), Вам не нужно переписывать виртуальную машину, просто «промежуточный» слой ... тогда мне пришло в голову, что WPF уже имеет такого посредника в виде ValueConverters ...
Итак, подведем итог: вы можете удалить множество повторяющихся разработок конвертеров, просто попросив виртуальную машину выставлять свойства соответствующего типа в первую очередь ...
Теперь вам нужно решить, хотите ли вы ...
Только мой 2с стоит ...:)