Как Преобразователи WPF могут использоваться в шаблоне MVVM?

«Исключение, выброшенное из C'Tor» - это не слово из четырех букв. Если объект не может быть создан правильно, C'tor должен потерпеть неудачу, потому что вы скорее отказали бы в создании, чем имели бы недопустимый объект.

17
задан Edward Tanguay 17 June 2009 в 14:42
поделиться

4 ответа

Обычно я вообще не использую преобразователи в MVVM, за исключением чистых задач пользовательского интерфейса (например, BooleanToVisibilityConverter). IMHO, вам лучше объявить свойство Customer типа CustomerViewModel в своей ContractViewModel, а не использовать ContractToCustomerConverter

12
ответ дан 30 November 2019 в 11:52
поделиться

В этом разговоре есть комментарий, который согласуется с позицией Кента, не использовать преобразователи вообще, интересно:

ViewModel - это в основном преобразователь значений на стероидах . Требуются "сырые" данные и преобразует его во что-то удобное для презентации, и наоборот. Если вы когда-нибудь обнаруживаете, что привязываете свойство элемента к ViewModel свойство, и вы используете преобразователь значений, остановитесь! Почему бы просто не создать свойство ViewModel, которое предоставляет "отформатированные" данные, а затем отбросить преобразователь значений вообще?

И в этот разговор :

Единственное место, где я вижу применение преобразователи значений в MVVM архитектура кросс-элементная привязки. Если я связываю Видимость панели для IsChecked CheckBox, тогда мне нужно будет использовать BooleanToVisibilityConverter.

11
ответ дан 30 November 2019 в 11:52
поделиться

Преобразователи редко следует использовать с MVVM. На самом деле я стараюсь их вообще не использовать. Виртуальная машина должна делать все, что нужно представлению для выполнения своей работы. Если для представления требуется Customer на основе контракта , на виртуальной машине должно быть свойство Customer , которое обновляется логикой виртуальной машины всякий раз, когда контракт изменения.

Преимущество этого шаблона MVVM в том, что я также могу привязать представление к модели представления B, которая заполняет ее другими данными.

Я оспариваю это утверждение. По моему опыту, представления не являются общими для разных типов виртуальных машин, и это не является целью MVVM.

8
ответ дан 30 November 2019 в 11:52
поделиться

Как упоминалось выше, веб-сайт - хорошее место, но есть и другие хорошие ресурсы:

Есть еще несколько других, и на многие из них есть ссылки с сайта.

Как мне представить вид каждого инструмента для данного датчика? Отображая небольшой график (вспомните спарклайн Эдварда Тафте ), который создается путем преобразования временного ряда в источник изображения с помощью конвертера ( TimeSeriesToSparklineConverter )

Вот как я думаю MVVM: Модель предоставляет данные моделям просмотра. Модель представления предоставляет представление поведения, данных модели и состояния. Представления выполняют работу по визуальному представлению данных модели и предоставляют интерфейс для поведения, согласованного с состоянием модели представления.

Таким образом, я не верю, что изображения спарклайнов входят в модель (модель - это данные, а не конкретный визуальный элемент). его представление). Я также не верю, что изображения спарклайнов входят в модель представления (что, если мое представление хочет представлять данные по-другому, скажем, в виде строки сетки, просто показывающей min, max, среднее, стандартное отклонение и т. д. ряда?). Таким образом, мне кажется, что представление должно обрабатывать работу по преобразованию данных в желаемое представление.

Итак, если я хочу раскрыть поведение, данные модели и заданное состояние для определенной модели представления в интерфейсе командной строки вместо графического интерфейса WPF я не хочу, чтобы моя модель и моя модель представления содержали изображения. Это неправильно? Должны ли мы иметь SensorCollectionGUIViewModel и SensorCollectionCommandLineViewModel ? Мне это кажется неправильным: я думаю о модели представления как о абстрактном представлении представления, а не о конкретном и привязанном к определенной технологии, как предполагают эти названия.

Вот где я нахожусь в моем постоянно развивающемся понимании MVVM. Что вы здесь делаете для тех, кто говорит не использовать конвертеры?

стандартное отклонение и т. д. серии?). Таким образом, мне кажется, что представление должно обрабатывать работу по преобразованию данных в желаемое представление.

Итак, если я хочу раскрыть поведение, данные модели и заданное состояние для определенной модели представления в интерфейсе командной строки вместо графического интерфейса WPF я не хочу, чтобы моя модель и моя модель представления содержали изображения. Это неправильно? Должны ли мы иметь SensorCollectionGUIViewModel и SensorCollectionCommandLineViewModel ? Мне это кажется неправильным: я думаю о модели представления как о абстрактном представлении представления, а не о конкретном и привязанном к определенной технологии, как предполагают эти названия.

Вот где я нахожусь в моем постоянно развивающемся понимании MVVM. Что вы здесь делаете для тех, кто говорит не использовать конвертеры?

стандартное отклонение и т. д. серии?). Таким образом, мне кажется, что представление должно обрабатывать работу по преобразованию данных в желаемое представление.

Итак, если я хочу раскрыть поведение, данные модели и заданное состояние для определенной модели представления в интерфейсе командной строки вместо графического интерфейса WPF я не хочу, чтобы моя модель и моя модель представления содержали изображения. Это неправильно? Должны ли мы иметь SensorCollectionGUIViewModel и SensorCollectionCommandLineViewModel ? Мне это кажется неправильным: я думаю о модели представления как о абстрактном представлении представления, а не о конкретном и привязанном к определенной технологии, как предполагают эти названия.

Вот где я нахожусь в моем постоянно развивающемся понимании MVVM. Что вы здесь делаете для тех, кто говорит не использовать конвертеры?

из серии?). Таким образом, мне кажется, что представление должно обрабатывать работу по преобразованию данных в желаемое представление.

Итак, если я хочу раскрыть поведение, данные модели и заданное состояние для определенной модели представления в интерфейсе командной строки вместо графического интерфейса WPF я не хочу, чтобы моя модель и моя модель представления содержали изображения. Это неправильно? Должны ли мы иметь SensorCollectionGUIViewModel и SensorCollectionCommandLineViewModel ? Мне это кажется неправильным: я думаю о модели представления как о абстрактном представлении представления, а не о конкретном и привязанном к определенной технологии, как предполагают эти названия.

Вот где я нахожусь в моем постоянно развивающемся понимании MVVM. Что вы здесь делаете для тех, кто говорит не использовать конвертеры?

из серии?). Таким образом, мне кажется, что представление должно обрабатывать работу по преобразованию данных в желаемое представление.

Итак, если я хочу раскрыть поведение, данные модели и заданное состояние для определенной модели представления в интерфейсе командной строки вместо графического интерфейса WPF я не хочу, чтобы моя модель и моя модель представления содержали изображения. Это неправильно? Должны ли мы иметь SensorCollectionGUIViewModel и SensorCollectionCommandLineViewModel ? Мне это кажется неправильным: я думаю о модели представления как о абстрактном представлении представления, а не о конкретном и привязанном к определенной технологии, как предполагают эти названия.

Вот где я нахожусь в моем постоянно развивающемся понимании MVVM. Что вы здесь делаете для тех, кто говорит не использовать конвертеры?

мне кажется, что представление должно обрабатывать работу по преобразованию данных в желаемое представление.

Так что, если я хочу раскрыть поведение, данные модели и данное состояние для определенной модели представления в интерфейсе командной строки вместо графический интерфейс WPF, я не хочу, чтобы ни моя модель, ни моя модель представления содержали изображения. Это неправильно? Должны ли мы иметь SensorCollectionGUIViewModel и SensorCollectionCommandLineViewModel ? Мне это кажется неправильным: я думаю о модели представления как о абстрактном представлении представления, а не о конкретном и привязанном к определенной технологии, как предполагают эти названия.

Вот где я нахожусь в моем постоянно развивающемся понимании MVVM. Что вы здесь делаете для тех, кто говорит не использовать конвертеры?

мне кажется, что представление должно обрабатывать работу по преобразованию данных в желаемое представление.

Так что, если я хочу раскрыть поведение, данные модели и данное состояние для определенной модели представления в интерфейсе командной строки вместо графический интерфейс WPF, я не хочу, чтобы ни моя модель, ни моя модель представления содержали изображения. Это неправильно? Должны ли мы иметь SensorCollectionGUIViewModel и SensorCollectionCommandLineViewModel ? Мне это кажется неправильным: я думаю о модели представления как о абстрактном представлении представления, а не о конкретном и привязанном к определенной технологии, как предполагают эти названия.

Вот где я нахожусь в моем постоянно развивающемся понимании MVVM. Что вы здесь делаете для тех, кто говорит не использовать конвертеры?

Итак, если я хочу раскрыть поведение, данные модели и данное состояние для определенной модели представления в интерфейсе командной строки вместо графического интерфейса пользователя WPF, я не хочу, чтобы моя модель или моя модель представления содержали изображения. Это неправильно? Должны ли мы иметь SensorCollectionGUIViewModel и SensorCollectionCommandLineViewModel ? Мне это кажется неправильным: я думаю о модели представления как о абстрактном представлении представления, а не о конкретном и привязанном к определенной технологии, как предполагают эти названия.

Вот где я нахожусь в моем постоянно развивающемся понимании MVVM. Что вы здесь делаете для тех, кто говорит не использовать конвертеры?

Итак, если я хочу раскрыть поведение, данные модели и данное состояние для определенной модели представления в интерфейсе командной строки вместо графического интерфейса пользователя WPF, я не хочу, чтобы моя модель или моя модель представления содержали изображения. Это неправильно? Должны ли мы иметь SensorCollectionGUIViewModel и SensorCollectionCommandLineViewModel ? Мне это кажется неправильным: я думаю о модели представления как о абстрактном представлении представления, а не о конкретном и привязанном к определенной технологии, как предполагают эти названия.

Вот где я нахожусь в моем постоянно развивающемся понимании MVVM. Что вы здесь делаете для тех, кто говорит не использовать конвертеры?

Я не хочу, чтобы моя модель или моя модель просмотра содержали изображения. Это неправильно? Должны ли мы иметь SensorCollectionGUIViewModel и SensorCollectionCommandLineViewModel ? Мне это кажется неправильным: я думаю о модели представления как о абстрактном представлении представления, а не о конкретном и привязанном к определенной технологии, как предполагают эти названия.

Вот где я нахожусь в моем постоянно развивающемся понимании MVVM. Что вы здесь делаете для тех, кто говорит не использовать конвертеры?

Я не хочу, чтобы моя модель или моя модель просмотра содержали изображения. Это неправильно? Должны ли мы иметь SensorCollectionGUIViewModel и SensorCollectionCommandLineViewModel ? Мне это кажется неправильным: я думаю о модели представления как о абстрактном представлении представления, а не о конкретном и привязанном к определенной технологии, как предполагают эти названия.

Вот где я нахожусь в моем постоянно развивающемся понимании MVVM. Что вы здесь делаете для тех, кто говорит не использовать конвертеры?

Вот где я нахожусь в своем постоянно развивающемся понимании MVVM. Что вы здесь делаете для тех, кто говорит не использовать конвертеры?

Вот где я нахожусь в своем постоянно развивающемся понимании MVVM. Что вы здесь делаете для тех, кто говорит не использовать конвертеры?

5
ответ дан 30 November 2019 в 11:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: