Вот пример сценарий ориентируется MVVM развития WPF/SL:Как мы можем реализовать распространение уведомлений об изменениях для WPF и SL в шаблоне MVVM?
- Просмотр данных связывающимися для просмотра свойств модели «Target»
- «Target» выставляет поле объекта под названием «данные», которые существует в локальной модели приложения, называемой «Оригинал»
- , когда изменения «оригинала» должны поднять уведомление к модели представления, а затем распространить уведомление об изменении на представление.
Вот решения, которые я придумал, но мне не нравится ни один из них. Я ищу другие идеи, к тому времени, когда мы придумаем что-то твердое, я уверен, что Microsoft выпустит .NET 5 с расширениями WPF/SL для улучшения инструментов для разработки MVVM.
На данный момент возникает вопрос: «Что вы сделали для решения этой проблемы и как она сработала для вас?»
Вариант 1.
Предложение:
Присоединить обработчик данных «s PropertyChanged случае, если часы для строковых значений свойств она заботится о том, что, возможно, изменились, и рейзы соответствующее уведомление.
Почему я не люблю:
Изменения не пузырь, естественно, объекты должны быть явно смотрел, если данные изменения в качестве нового источника, события должны быть незарегистрированный/зарегистрированный.
Почему я вроде этого:
Я получаю явный контроль над Размножением изменений, и я не должен использовать любые типы, которые принадлежат на более высокий уровне приложений, такие как свойства зависимостей.
Вариант 2.
Предложение:
Присоединить обработчик данных «s PropertyChanged событие, которое повторно вызывает событие во всех свойств, используя имя имя свойства.
Почему я не люблю:
Это, по существу, такой же, как вариант 1, но менее разумны, и заставляет меня никогда не менять свои имена свойств, так как они должны быть такими же, как имена свойств на данных
Почему я вроде как это:
Это очень легко настроить, и я не должен думать об этом ... Потом еще раз, если я стараюсь думать, и изменить имена на вещи что имеет смысл, я стреляю себе в ногу, а потом я должен думать об этом!
Вариант 3.
Предложение:
унаследует мой взгляд модель из объекта зависимостей, и уведомляет обязательные источники изменений непосредственно.
Почему я не люблю:
Я даже не 100% уверен, что свойства зависимостях/объекты могут это сделать, это просто мысль заглянуть. Также я лично не считаю, что типы WPF/SL, такие как Dep Obj, относятся к уровню модели представления.
Почему я вроде этого:
Если у него есть возможность, что я ищу, то это хороший ответ! минус этот досадный вопрос о расслоении.
Вариант 4.
Предложение:
Используйте непротиворечивую систему обмена сообщений агента на основе офф задачи Parallels DataFlow библиотеки на распространение информации через все связан конвейерный.
Почему я не люблю:
Я никогда не пробовал это, и я почему-то думаю, что это будет не хватать, плюс это требует от меня, чтобы думать о моем коде совершенно по-другому все наоборот.
Почему я вроде как это:
Он имеет Possiblity позволять мне делать некоторые очень забавные манипуляции с моделью данных нажимной на основе и с использованием ActionBlocks как проверки и установки на то приватно изменить свойства вид модели и явно контролировать уведомления PropertyChanged.
Вы отправляете сообщения с вашей модели всем, кто интересуется? –
@chibacity, да. – devuxer
@Dan Так что в сущности модели могут отображать сообщения. Это нарушает слоирование MVVM. –