|
0 / 0 / 0
Регистрация: 11.07.2026
Сообщений: 12
|
|||||||||||
Странно, но после SelectedItems.Clear, в SelectedItems по прежнему осталась таже строка11.07.2026, 15:51. Показов 5788. Ответов 76
Метки нет (Все метки)
Всё должно было быть коротко:
0
|
|||||||||||
| 11.07.2026, 15:51 | |
|
Ответы с готовыми решениями:
76
Правильное отображение selectedItems в Combobox
|
|
|
||
| 03.09.2026, 12:32 | ||
|
Но если тимлид решил утонуть в MVVM и никоим образом не использовать CB, то флаг ему в руки. Путь бедные прогеры пишут AP/DP/Behavior миллионами, когда, вместо этого, можно решить задачу тремя строками в CB и MVVM нарушен не будет, так как View ничего не знает о формировании данных, он их только отображает, форматирует и если нужно сортирует для того, чтобы пользователь не ломал глаза. Или я не прав? MVVM инструмент, а не тюрьма, и использовать его нужно с головой, а не упираться рогом
0
|
||
|
|
||
| 03.09.2026, 15:33 | ||
|
Andrey-MSK, ну, на все, как говорится, есть время и случай. Использовать некоторые "ухищрения" для решения той или иной задачи - выбор и возможность каждого.
В вашем случае, дело не столько в mvvm, сколько в возможных ограничениях функциональных возможностей слоя View и вероятной лишней "перекачки" данных в будущем. Слой View не может быть источником "новых данных" или их модификаций. В зависимости от того, как вы отсортировали данные и что именно показываете в данный момент, может затребоваться отдельная информация о некотором предмете из результата сортировки. Так как вы сортируете данные во View, вам придется из View передать некоторые параметры текущего вида обратно в VM, чтобы она сформировала новую выборку. Это не приветствуется не только в самом паттерне mvvm, но и многими конторами в принципе. В некоторых случаях (в моей практике почти везде) - View пишут люди весьма далекие от предмета разработки. Они не в курсе деталей, не знают внутреннюю структуру объектов. Они не смогут сделать полноценную сортировку на своем уровне. Или, для этого, им придется раскрывать больше деталей, чем требуется. А это уже явное проникновение лишнего в слой пользователя. Просто зачастую, многие этим пользуются: неумение или нежелание делать "по нормальному" пытаются скрыть всякими отмазками..
0
|
||
|
|
||
| 03.09.2026, 15:42 | ||
|
0
|
||
|
|
||
| 03.09.2026, 16:09 | ||
|
В целом же, показ текущих данных, выборка, сортировка и прочее - это результат системы команд и действий от пользователя, который перенаправляет View. Все остальное должно выполняться ниже лежащими слоями, которые непосредственно работают с данными. Я уже много раз говорил это в различных темах и приводил примеры возможных конфузов, если действовать так, как вы задумали. View - это такой слой, который не должен ни от чего зависеть. Хоть ваш, хоть мой View должен уметь правильно работать с ядром (vm/m, бд и т.п.). Различных вариаций слоя UI может быть несколько, на разных платформах и написанными разными авторами. Вы же полностью зациклили свой View на себя - внедрили в него свою сортировку. Таким образом, остальной функционал приложения оказался "обрезанным". Чтобы это приложение работало - вам придется всем передавать свой View. А я, например, не хочу ваш вариант View - я хочу сделать свой. И что же получится? Сортировки у меня не будет никакой - мне придется ее делать самому, причем в том месте, которое мне покажется подходящим для этого. И это будет точно не View. То есть, ваш подход не только не соблюдает mvvm, но и логически выходит не "удобным".
0
|
||
|
|
|||||||||
| 03.09.2026, 17:18 | |||||||||
![]() Добавлено через 13 минут wizard41, Не по теме: Складывается ощущение что вы целиком переехали в Java с его MVC. Без обид. Кстати вопросов по Java у меня тоже много ![]() Добавлено через 26 минут wizard41, Вот то, о чём вы говорите Контроллер с загрузкой данных.
0
|
|||||||||
|
|
||
| 03.09.2026, 17:32 | ||
|
Andrey-MSK, есть большая разница между тем, что хочет "вторичный" программист и/или пользователь и тем, что именно я, как автор, вкладываю в функционал данного ПО. Так же, при необходимости, могут быть предусмотрены некоторые методики "расширения" функционала, если таковые намечаются в будущем. Но опять же, в рамках дозволенного. Все и вся предусмотреть на все случаи жизни никто не в состоянии.
От сюда, если в ПО должна быть заложена некоторая сортировка, а тем паче, если на ее основании могут быть произведены еще какие-то доп. выборки, то это значит, что данные возможности должны быть реализованы на уровне ядра. Это постулат. Andrey-MSK, вы в команде работали когда-нибудь? Мне кажется нет. Если это ПО лично ваше и делается в ед. лице - ваше право как поступать. Но когда вы столкнетесь с децентрализованной разработкой, и тем более в какой-то более-менее серьезной конторе - вам придется следовать строгим критериям. И лучше всего к этому приучаться заранее. В некоторых таких конторах (в двух последних точно, где я участвовал) - все ваши размышления, которые вы мне пишете - отметут на раз два, даже не слушая. Вам все равно придется переделывать. По большей части, именно с этой позиции я вам и даю рекомендации. И просто предупреждаю о возможных последствиях и трудностях, которые неизбежно вызовет ваш подход "толкания" логики в View. Вы думаете я ни разу не пытался смухлевать? Как бы не так! . Но позже поимел много неприятностей и бессонных ночей.Поэтому, с некоторых пор пытаюсь делать сразу все правильно, возможно, иногда даже через чур излишне правильно. Зато, внедрение доп. хотелок происходит крайне легко и быстро. Я вам рекомендую выработать такой же подход. Не ленитесь. Добавлено через 2 минуты MVC - это MVC, будь то джава или шарп. Мы же говорим именно про MVVM. И здесь вы в View пытаетесь приписать слишком много лишнего.
0
|
||
|
|
||||||
| 03.09.2026, 17:43 | ||||||
|
wizard41, Ну хорошо. То есть вы предлагаете сортировать всё в VM и написать что-то типа такого?
0
|
||||||
|
|
||||
| 03.09.2026, 18:40 | ||||
|
Пока что, я направляю вас на раздумья, по поводу организации взаимодействия логики слоев. Считаю, здесь сейчас важна не столько сама реализация, сколько понимание того - где ее разместить и как. Для выяснения - небольшое тестовое задание, чтобы понять как вы мыслите: 1. Вы показываете некоторое число в окне. Со временем, необходимо изменить кол-во знаков после запятой. 2. (Усложнение +): то же, что и п.1, но число является частью некоторого текста. 3. (Усложнение ++): все что выше, но нужно иметь возможность пользователю менять кол-во знаков. 4. (Усложнение +++): ко всему этому, добавляется возможность отобразить число прописью. Ваши действия? (Идеальный вариант - View не трогаем вообще!) Добавлено через 42 секунды Добавлено через 41 минуту Andrey-MSK, или вот, ситуация ближе к вашему случаю: View, получив "сырую" коллекцию данных, отсортировал ее (сам) и показал. Теперь, нам нужно из показанных данных отобразить список каких-то деталей (часть объекта), причем в том же порядке, в каком сейчас это видит пользователь. VM, в вашем случае, о том что видит пользователь и в каком порядке - ничего не знает. Поэтому, у вас будет как минимум два варианта: а) передать обратно в VM текущее представление, VM делает новую выборку и выкидывает (опять же!) во View коллекцию, согласно текущему виду. б) передать в VM параметр, по которому произведется новая выборка, VM опять же перекидывает "сырые" данные обратно в View, а View снова по каким-то своим соображениям ее сортирует, чтобы она соответствовала текущему представлению основной коллекции. В случае, когда порядком отображения командует сама VM - она сама уже будет находится в необходимом состоянии, по которому можно за один проход получить пачку новых данных, причем именно в том виде, который сейчас отображается у пользователя. В этом как раз и задача VM. Формировать показ (не данные!) нужным образом.
0
|
||||
|
|
||||||
| 04.09.2026, 08:47 | ||||||
StringFormat=N2 и цепочки StackPanel для формирования чего-то из многих частей.. ![]() Добавлено через 2 минуты
0
|
||||||
|
|
|||||
| 04.09.2026, 14:16 | |||||
|
Суть этого - понять, что не всегда перекладывание логики в View удобно и полезно. ![]() Вот я и хотел посмотреть, на сколько "сильно" вы можете работать со слоями.. Если ваше собственное решение (через View) вас устраивает и допускается, то делайте так и не слушайте никого .О возможных проблемах в дальнейшем - я выше говорил. Решать вам.
1
|
|||||
|
|
|||||||||||
| 04.09.2026, 14:53 | |||||||||||
![]() ![]() А так я сам по себе, всё в одном лице - придумал, спроектировал, пинка себе дал, написал -> работает, народ не жалуется Вот сижу время от времени переписываю по мере получения новых знаний. Первый вариант приложухи был ваще жесть в плане кода, но работало блин ![]() Добавлено через 25 минут
1
|
|||||||||||
|
|
||
| 04.09.2026, 17:33 | ||
|
Не считаю, что возраст может ограничивать стремление к познанию чего-то нового.. Мне вон тоже, без малого полтинник ![]() Но ничего, пытаемся, так сказать, остатками зубов погрызть гранит науки .А то, что я иногда так "бесповоротно" и "принципиально" формулирую свои умозаключения - это, в каком то смысле дань (осадок/остаток) прошлой академической деятельности.. Студентам нельзя давать много воли для решения задач. А то, загордятся раньше времени и не поймут суть процесса! .Сказано делать вот так - значит только так! (преподавал вышмат в нескольких институтах). Так что, Andrey-MSK, в некотором смысле, вы для меня тоже "студент"! Звиняйте! .Особенно, когда здесь подворачивается какая-нибудь тема для разговора. Ибо, "Иных уж нет, а те далече.." (с) А.С. Пушкин "Евгений Онегин".
1
|
||
|
|
||||
| 04.09.2026, 20:09 | ||||
![]() ![]()
0
|
||||
|
Модератор
|
|||
| 04.09.2026, 20:54 | |||
|
1) Не надо смешивать MVVM и "запрет Code Behind". Они совершенно между собой не связаны. В MVVM нет никаких правил на счёт реализации View. 2) Вы правы на все 100%, когда чисто визуальную сортировку не прокидываете в ViewModel. wizard41 прав на все 100%, когда пишет о том, что в общем случае сортировка чаще всего это сортировка исходных данных, так как выборка целиком всех данных в View не происходит. Поэтому сортировка при ленивой выгрузке - это задача Модели. 3) Вы не правы когда полагаетесь в реализации только на Code Behind. Вашу реализацию можно сделать через производный тип, через статические хелперы, через Attached Property. Какой вариант из них (включая ваш) оптимальнее.... это зависит от того, что считать "оптимальным". В современном программировании один из критериев оптимальности это возможность тестирования (юнит и интергральное). Code Behind очень трудно автоматически тестировать. А затраты на тестирование в современном продакшен это часто значительно больше затрат чем на саму разработку.
1
|
|||
|
|
||||||||||
| 04.09.2026, 22:36 | ||||||||||
|
Элд Хасп, Да не, мы тут вроде разобрались
wizard41, даёт советы со своего опыта работы в конторах, которые профессионально занимаются разработкой. Там свои критерии и правила. Я ему возражал со своей колокольни, где всё делаю в одну каску и мне всё ясно и понятно где и что происходит в рамках моего проекта ![]() ![]() ![]() Добавлено через 3 минуты ![]() Добавлено через 18 минут Добавлено через 17 минут Гружу примерно так, по параметрам, и получаю то что нужно
0
|
||||||||||
|
|
|
| 14.09.2026, 08:46 | |
|
wizard41, Ну как чем. Гоняет данные между View и DA. Строит сложные объекты привязки и потом разбирает их для DA. Команды, управляет режимами работы View ну и т.д.
0
|
|
| 14.09.2026, 08:46 | |
|
Работа с SelectedItems ListBox
listbox SelectionChanged clear ошибка в TreeView.Items.Clear(); Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|