powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / MVVM и куча вопросов
25 сообщений из 62, страница 1 из 3
MVVM и куча вопросов
    #36838271
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все замечательные (немногочисленные примеры) показывают нам и говорят что данный шаблон просто спасение души и его самая замечательная особенность что можно отделить лицо от view
и что ни одна из частей не знает друг о друге!

Но у меня возникает вопрос - а где же реализовывать бизнес-логику по вводу данных??
Пример: имеет 2 комбобокса с данными типа (к примеру) "Склады" и "Товары"
бизнес логика говорит что в итоге я должен выбрать только товар, находящийся на данном складе и вот тут возникает проблема - если фильтровать данные в модели - этож скока кода и геморра надо поиметь шоб все это вручную реализовывать, а если это сделать всего лишь парами параметров в XAML - нарушаецца идеология такого замечательного шаблона!

Как быть? может надо использовать MVVMExt???? ))
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838276
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp,

да поддерживаю вопрос .
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838283
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ааа, и вдогонку - смотрю кучу примеров там и у модели куча своих методов и у view куча своих методов - непонятно - то есть логика свободно гуляет между этими 2мя частями??? куда что помещать? где граница что должен делать объект и его view?
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838304
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
sp
Пример: имеет 2 комбобокса с данными типа (к примеру) "Склады" и "Товары"

В VM должен быть каскадный lookup.
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838311
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spПример: имеет 2 комбобокса с данными типа (к примеру) "Склады" и "Товары"
бизнес логика говорит что в итоге я должен выбрать только товар, находящийся на данном складе и вот тут возникает проблема

Никакой проблемы тут не возникает.
В связке Model-View-ViewModel бизнес-логика реализуется в слое Model (оно же DomainModel, оно же модель предметной области). ViewModel, и уж тем более View - никакого отношения к бизнес-логике не имеют.

Есть объект Товар, есть объект Склад, у каждого Склада есть св-во, возвращающее набор Товаров, находящихся на данном Складе. А дальше уже где надо, там и используешь. В том числе и в других местах DomainModel (например для реализации правила "я должен выбрать только товар, находящийся на данном складе" при формирования какого-либо составного объекта), и во ViewModel.
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838319
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПspПример: имеет 2 комбобокса с данными типа (к примеру) "Склады" и "Товары"
бизнес логика говорит что в итоге я должен выбрать только товар, находящийся на данном складе и вот тут возникает проблема

Никакой проблемы тут не возникает.
В связке Model-View-ViewModel бизнес-логика реализуется в слое Model (оно же DomainModel, оно же модель предметной области). ViewModel, и уж тем более View - никакого отношения к бизнес-логике не имеют.

Есть объект Товар, есть объект Склад, у каждого Склада есть св-во, возвращающее набор Товаров, находящихся на данном Складе. А дальше уже где надо, там и используешь. В том числе и в других местах DomainModel (например для реализации правила "я должен выбрать только товар, находящийся на данном складе" при формирования какого-либо составного объекта), и во ViewModel.

но самое главное то я забыл Вам сказать - шо редактируем то мы накладную )))))
это шо за каждым чихов лице я должен пройти 2 слоя чтобы чтото изменить!!?? это же абсурд - получаецца модель ответственна за лицо!!??
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838365
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 sp
но самое главное то я забыл Вам сказать - шо редактируем то мы накладную )))))
Ну и редактируйте накладную. Именно её я имел в виду во фразе "при формирования какого-либо составного объекта"
Есть объект Накладная. У него есть св-во Склад (с которого идёт отгрузка). Есть у Накладной список отгружаемых товаров. Вот при изменении этого списка и проверяйте правило "данный товар есть на данном складе". Товар присутствует в Склад.ТоварыВНаличии - ок, не присутствует - эксепшен вверх.
Так же можете проверять правила "есть ли данный товар в нужном количестве", "не зарезервирован ли он", и прочие правила бизнес-логики.
Всё на уровне DomainModel.

это шо за каждым чихов лице я должен пройти 2 слоя чтобы чтото изменить!!??
Да хоть десять.

это же абсурд - получаецца модель ответственна за лицо!!??
Абсурд - это когда лицо ответственно за бизнес-логику. И когда модель лица ответственна за бизнес-логику - тоже абсурд.
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838371
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП
Есть объект Товар, есть объект Склад, у каждого Склада есть св-во, возвращающее набор Товаров, находящихся на данном Складе. А дальше уже где надо, там и используешь. В том числе и в других местах DomainModel (например для реализации правила "я должен выбрать только товар, находящийся на данном складе" при формирования какого-либо составного объекта), и во ViewModel.

и не сильно ли это накладно будет по части ресурсов бегать каждый раз за товарами в модель или даже на сервер, когда лицо само может эффективнее это выполнить!?
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838380
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП
Абсурд - это когда лицо ответственно за бизнес-логику. И когда модель лица ответственна за бизнес-логику - тоже абсурд.

Я вообщето имел в виду лишь отчасти проверку правил а в большей действия в интерлице!!!
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838386
JohnSparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никакого гемора в формировании в модели представления списка товаров в зависимости от изменения выбранного склада.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
/////////////////////////////////////////////////////////
// модель данных
public class BaseEntity
{
	decimal ID { get; set; }
	string Name { get; set; }

	public override string ToString()
	{
		return string.Format("{0} ({1})", Name, ID);
	}
}

public class Storage : BaseEntity	// склад
{

}

public class Product : BaseEntity	// товар
{
	// склад, на котором находится данный товар
	Storage Storage { get; set; }
}

///////////////////////////////////////////////////////////
// модель представления
public class ViewModel : INotifyPropertyChanged
{
	// реализация INotifyPropertyChanged
	...

	// список доступных складов
	public List<Storage> Storages { get; }

	// текущий выбранный склад
	private Storage _selectedStorage;
	public Storage SelectedStorage
	{
		get
		{
			return _selectedStorage;
		}
		set
		{
			_selectedStorage = value;
			
			OnPropertyChanged("SelectedStorage");
			
			// т.к. товары зависят от склада, то известим клиентов об 
			// обновлении списка товаров
			OnPropertyChanged("Products");
			// и очистим выбранный товар
			SelectedProduct = null;
		}
	}

	// список доступных товаров (зависит от выбранного склада)
	public List<Product> Products
	{
		get
		{
			// выборка списка товаров из к.-л. источника в зависимости от выбранного склада
			// например - запрос LINQ (вероятно с ошибками, редко пользуюсь)
			List<Product> products = 
				(from p 
				in FullProducts 
				where p.Storage == SelectedStorage 
				select p).ToList<Product>();
		}
	}

	// текущий выбранный товар
	private Product _selectedProduct;
	public Product SelectedProduct
	{
		get
		{
			return _selectedProduct;
		}
		set
		{
			_selectedProduct = value;
			
			OnPropertyChanged("SelectedProduct");
			
			// т.к. товары зависят от склада, то известим клиентов об 
			// обновлении списка товаров
			OnPropertyChanged("Products");
			// и очистим выбранный товар
			SelectedProduct = null;
		}
	}
}
XAML представления
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<ComboBox Name="ComboStorages" 
		  ItemsSource="{Binding Path=Storages, UpdateSourceTrigger=PropertyChanged}" 
		  SelectedItem="{Binding Path=SelectedStorage, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

<ComboBox Name="ComboProducts" 
		  ItemsSource="{Binding Path=Products, UpdateSourceTrigger=PropertyChanged}" 
		  SelectedItem="{Binding Path=SelectedProduct, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838395
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spи не сильно ли это накладно будет по части ресурсов бегать каждый раз за товарами в модель или даже на сервер, когда лицо само может эффективнее это выполнить!?
Кто сказал, что оно куда-то бегать должно, на какой-то там сервер?
Не путайте Layer и Tier
Хотите - кэшируйте информацию локально, с ней и работайте. Не хотите - флаг в руки, на каждый чих дёргайте сервак. Хотите - службу нотификейшенов прикрутите сбоку, для обеспечения обновления локально закэшированных данных. К MVVM оно вообще никак не относится.

Я вообщето имел в виду лишь отчасти проверку правил а в большей действия в интерлице!!!
Тогда и не говорите про бизнес-логику.
Не знаете значение слова - не употребляйте его.
Авось за умного сойдёте.
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838400
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да и это всеголишь один вопрос - а вот примеру действия "тут мы читаем, тут не читаем тут рыбу заворачивали" - это же дествия исключительно с лицом - что модель должна и этим занимацца , а ViewModel тогда что тут делает?? если разбоки идут только между моделью и лицом???
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838409
JohnSparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В примере кода во ViewModel.SelectedProduct.Set() все, что после строки "OnPropertyChanged("SelectedProduct");", лишнее: свойство SelectedProduct получено механическим копированием SelectedStorage, прохлопал удалить лишнее.
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838410
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП
Я вообщето имел в виду лишь отчасти проверку правил а в большей действия в интерлице!!!
Тогда и не говорите про бизнес-логику.
Не знаете значение слова - не употребляйте его.
Авось за умного сойдёте.

Простите, но я вынужден тоже самое сказать и в ваш адрес - по вашему изменения в лице сцелью ударить юзера по рукам - это не бизнес логика!!?? вам тогда на 1й курс срочно надо!!
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838418
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spПростите, но я вынужден тоже самое сказать и в ваш адрес - по вашему изменения в лице сцелью ударить юзера по рукам - это не бизнес логика!!?? вам тогда на 1й курс срочно надо!!
Простите, вы дурак?
Чисто с медицинской точки зрения?
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838423
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spда и это всеголишь один вопрос - а вот примеру действия "тут мы читаем, тут не читаем тут рыбу заворачивали" - это же дествия исключительно с лицом - что модель должна и этим занимацца , а ViewModel тогда что тут делает?? если разбоки идут только между моделью и лицом???

тьфу очепятался - вопрос был про view - нафига тада казе баян!?)
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838432
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
простите, глупостями не занимаемся и на глупые вопросы не отвечаем! )
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838436
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JohnSparrowВ примере кода во ViewModel.SelectedProduct.Set() все, что после строки "OnPropertyChanged("SelectedProduct");", лишнее: свойство SelectedProduct получено механическим копированием SelectedStorage, прохлопал удалить лишнее.

Большое спасибо за пример! снял некоторую часть вопросов! )
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838441
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Вопросы "сцелью ударить юзера по рукам" - это вообще авторизация и аутентификация. Сквозная функциональность по всем слоям. Почитайте уже книжки какие-нибудь.
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838481
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПP.S. Вопросы "сцелью ударить юзера по рукам" - это вообще авторизация и аутентификация. Сквозная функциональность по всем слоям. Почитайте уже книжки какие-нибудь.

ударить не совсем чтоб не дать смотреть - а блокировать или наоборот расширять предоствляемую функциональность по части взаимодействия с интерфейсом в зависимости сложных бизнес-правил в лице сложного объекта.

Пива нет, пива нет - Нет чтоб написа просто "Пива нет" - не хотел вас обидеть )
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838483
JohnSparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp
Большое спасибо за пример! снял некоторую часть вопросов! )
Не за что. А какие вопросы не снял?
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838531
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JohnSparrowsp
Большое спасибо за пример! снял некоторую часть вопросов! )
Не за что. А какие вопросы не снял?

Спасибо за помощь!
щас переосмыслю все что было ранее в плане того что Вы показали и апосля сформулирую что осталось непонятым ))
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838835
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ага, ну вот другой вопрос:
часто бывает что в зависимости од значения одного поля в интерфейсе толи дизейблицца. толти прячется часть интерфейса, менюй и т.д. (т.е. некоторое бизнес-правило говорящее что если поле такоето равно томуто - не заполнять такието поля и т.д.) - где эта функциональность реализовывать?
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838975
Var79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
либо в xaml либо в xaml.cs, либо на стороне клиента (вью) сделать класс хелпер
...
Рейтинг: 0 / 0
MVVM и куча вопросов
    #36838976
Var79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но в домэйн-модель тоже проверять коректность
...
Рейтинг: 0 / 0
25 сообщений из 62, страница 1 из 3
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / MVVM и куча вопросов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]