1 / 1 / 1
Регистрация: 30.01.2013
Сообщений: 74
|
|
1 | |
Где располагать логику приложения, когда используем паттерн mvvm?28.03.2017, 19:20. Показов 7055. Ответов 34
Метки нет (Все метки)
Изучаю wpf и паттерн mvvm.
Никогда не задумывался, где что располагать, я считал (считаю пока), что представление - это пользовательский интерфейс; модель - это данные, управление этих данных, логика обработки их, да вся логика; представление-модель - это просто то место, где идет соединение модели и представления. Но прав ли я ? Везде пишут, что во view-model размещается вся логика нашего приложения. А какой смысл несут данные слова? Ведь я же не буду все размещать в классе ViewModel? к примеру, я делаю так: создаю папки model, view, viewmodel. Во view созданию какое-нибудь окно. В модели создаю класс FileModel, но и при этом, к примеру, я создаю в модели также работу с этими данными: класс FileManipulation, который содержит какую-нибудь логику обработки данных. И вью-модел у меня является тем мостом, между моделью и вью. В этом вью-модель я обращаюсь к классу FileManipulation, беру данные оттуда и вывожу их. По сути, это все формальность же, в какой папке (model или viewmodel) я размещу свой класс FileManipulation, но загрузился, а как будет все-таки корректнее, где должны быть такие классы? Ведь при реализации чего-то, таких классов FileManipulation может быть 20 штук?
0
|
28.03.2017, 19:20 | |
Ответы с готовыми решениями:
34
Паттерн MVVM или как писать приложения на WPF Паттерн MVVM Mvvm паттерн Паттерн MVVM |
22.04.2017, 21:49 | 21 | ||||||||||
Schcolar - тоже должен реализовывать (или как там говорят...имплементировать ) INotifyPropertyChanged
1
|
Жуткая тВарЬ
|
||||||
22.04.2017, 22:07 | 22 | |||||
skilllab, Какой то бездарный пример, лучше сделать так:
2
|
22.04.2017, 22:27 | 23 |
Какой есть. Кому лучше? ViewModel-и или типа чтоб попроще было? Может тогда вообще забить на эту VM? Чо там... пару свойств текстовых Добавлено через 1 минуту Не скажу всё есть в посте.
0
|
Жуткая тВарЬ
|
|
22.04.2017, 22:36 | 24 |
Эли это не ReadOnly (не имеющий метода сет) то я "испанский летчик"...
Да! именно так в данном случае вьюмодель вообще не нужна - если каждый "чих" оборачивать во вьюмодель, то вы скоро утонете в собственном коде. ВьюМодели создаются под конкретные ситуации и если надо только отображать данные школьников (и менять их), то создается одна вьюмодель которая оперирует всеми школьниками, а не по одной вьюмодели на каждого школьника Добавлено через 2 минуты И вот мне интересно, почему все на форуме используют явную имплементацию INotifyPropertyChanged - это же прошлый век ???
0
|
22.04.2017, 22:44 | 25 |
Зачем ему SET? Это составное свойство. Вы ж его сами в XAML стрингформатом запихнули.
Вот я так послушал один раз...может и вас... и сидел потом перебивал биндинги в XAML простынке, ибо чуть усложнилась логика и всё. Ваш пример лишь "вариация на тему", не более. Ну, вам виднее что там у HF. Ага)))) И снова Fody какой нибудь с аспектами. А потом поиск в гугле, а как же в этом Fody подписываться то... А как же посмотреть кто уведомляет и кого в дебаге.... И снова, это лишь ваша "вариация на тему".
0
|
Жуткая тВарЬ
|
||||||
22.04.2017, 22:54 | 26 | |||||
Значит у тебя была хреново составлена архитектура, ибо перебрать байдинги в случае изменения Модели на Вьюмодель 5 минутное дело - это я тебе говорю по опыту разработки проектов со сложным UI интерфесом - ибо такая ситуация достаточно частая, когда документация по разработки меняется уже после того как ты написал функционал...
Именно Fody, а если уж надо подписываться то либо по простому через
Не знание - это не невежество, я честно говоря не помню что бы когда то у меня возникали проблемы с дебагом при использовании Fody, потому что их по определению не должно быть...
0
|
22.04.2017, 23:28 | 27 | |||||
Именно, перебил с прямой привязки к модели - и стала нормальной. В этом и суть.
Ну и? И зачем сразу делать так, как ты посоветовал и назвал "правильным"? Ещё раз повторю - это лишь твои убеждения что у тебя правильный код в сообщении 22. Я же не утверждал что мой пример единственно верен В отличие от тебя. Жуть. as Где тут у тебя в коде показано что не вернёт null или Exception ? Да и вообще что this имплементирует INotify...?Если уж делать, то в классе модели (или где ты там подписываешься) просто добавить строчку
------------------------- Так что там с SET? Где тут SET и как им воспользоваться? Или пагодь...изменяя какой нибудь Name изменится свойство? Ах дааа.... Добавлено через 2 минуты У тебя нет, а у другой части пользователей Visual Studio окошечко "В данный момент исходный код не доступен для просмотра" при пошаговом - возникает. Госспади...всезнающий Ну серъёзно - лучше б просто в гугл отправил.
0
|
Жуткая тВарЬ
|
|
22.04.2017, 23:45 | 28 |
Блин! Это как с бараном пытаться разговаривать - ты ему о высоких материях, а у него в голове лишь ворота перед его глазами... на этом я думаю мы с тобой skilllab, закончим...
П.С. - перечитай внимательно пост 22 может осмыслишь что имелось ввиду... По поводу изменения имен свойств, а так же null или Exception и остального аналогичного бормотанья, я могу сказать одно - это лечится, со временем, с опытом...
0
|
23.04.2017, 00:38 | 30 | |||||
Приношу извинения за неточно сформулированную мысль. Сейчас подробнее распишу.
Проблема началась с того что я не могу получить данные из поля FIO, потому что всё это реализовано так:
Поэтому-то я и решил перенести формирование ФИО в другие места - например в саму модель Schkolar. Но увидел эту тему и решил спросить - будет ли это уместно, реализовывать подобные методы прямо в модели. По идее как раз ViewModel и должен этим заниматься. Но... проблема. Помогите подбиндится к FIO.
0
|
23.04.2017, 10:40 | 31 |
Все текстблоки ищут путь в коллекции Schcolars, а не в SelectedItem.
Я там вообще о другом. Зачем вам SET на составном свойстве? Чтоб его потом парсить? Вам предложили 2 разных подхода к вашей ситуации, а можете ещё и третий свой сделать Что не получилось то, применительно к вышеуказанным трём методам?
0
|
23.04.2017, 11:51 | 32 | |||||
А FIO находится в SchcolarViewModel. Как ему указать новый путь? или отменить начало поиска "в коллекции Schcolars"?
0
|
Жуткая тВарЬ
|
|||||||||||||||||||||
23.04.2017, 14:22 | 34 | ||||||||||||||||||||
Вариант 1:
MultiValueConverter
Вариант2: через ViewModel
П.С. Выбор вариантов зависит только от предпочтения и задач приложения Добавлено через 4 минуты П.С.С. В целом при желании логику конвертера можно перенести на уровень модели, но плюсов от этого мало - разве что кода чуть меньше
1
|
24.04.2017, 15:17 | 35 |
Спасибо skilllab и amarf за ответы. Последнее сообщение с реализацией подвердило догадку в том, что нужно переделать классы. В итоге переписал ViewModel классы и всё получилось.
0
|
24.04.2017, 15:17 | |
24.04.2017, 15:17 | |
Помогаю со студенческими работами здесь
35
Паттерн MVVM Паттерн mvvm Паттерн MVVM в WPF MVVM паттерн и привязка данных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |