|
Модератор
|
|||
Использование Code Behind Окна: допустимо и, если да, то в каких случаях?17.01.2021, 13:04. Показов 13440. Ответов 167
Метки нет (Все метки)
Тема создана из исходной Генерация имён при генерации элементов
Собственно вопрос данной темы это сообщение: Прошу воспринимать тему не как "Священные войны", а попытку разобраться в этом вопросе, когда на практике не совсем понятна цель "запрета" на использование CB. Особенно интересует мнение тех кто реально работает программистом в софтверной компании и знает на практики нюансы коллективной, корпоративной работы, проблемы поддержки выпущенного софта. Возьму на себя смелость специально "пригласить": Usaga, Rius, kolorotur, Рядовой, proa33, novikov.ea, escoult. В WPF есть шаблоны элементов и шаблоны данных. А то, что вы показали - это чёрт знает, что. Но точно не шаблон. Шаблоны задаются ИСКЛЮЧИТЕЛЬНО на XAML. XAML - это основной язык WPF. Code Behind в WPF не используется. Он должен оставаться пустым. Вообще забудьте, что он существует и никогда даже не открывайте файлы "*.xaml.cs".
0
|
|||
| 17.01.2021, 13:04 | |
|
Ответы с готовыми решениями:
167
Написание GUI руками, без привлечения специализированных фреймворков - нужно ли и если да, то в каких случаях? |
|
Модератор
|
||||
| 24.01.2021, 14:18 [ТС] | ||||
|
Добавлено через 4 минуты Вы хотите обоснованность, что ваш код работает? В этом никто не сомневается. Речь же совсем об ином о создании КАЧЕСТВЕННОГО C# кода приложения с WPF GUI. Какое отношение к этому имеют все ваши аргументы? Вы даже не хотите соблюдать официальные для Net Правила Именования. Без их соблюдения код не может считаться КАЧЕСТВЕННЫМ. То есть вас не заботит качество вашего кода. Так зачем все эти ваши разъяснения? Добавлено через 3 минуты UI элементу (а UC это такой же UI элемент как все остальные) НЕ МОЖЕТ требоваться "выполнить запрос...". UI элементы в WPF получают нужные им для представления образы данных по ПРИВЯЗКАМ (Binding). Покажите хоть ОДНУ ПРИВЯЗКУ в вашем коде. Добавлено через 2 минуты Весь WPF с точки зрения данных был создан ТОЛЬКО ДЛЯ ИСПОЛЬЗОВАНИЯ ПРИВЯЗОК. Это единственная добавленная в DependencyObject функция. Все остальные "вертятся" вокруг неё и построены на её использовании. Добавлено через 2 минуты Просто перевод на русский DependencyObject - "Объект зависимости". Зависимости задаются ПРИВЯЗКАМИ.
0
|
||||
| 24.01.2021, 14:42 | ||||||||
|
139
На мой взгляд паттерн MVVM нарушает фундаментальный принцип бритвы Оккама «Не следует множить сущее без необходимости». MVVM создаёт кучу (часто ненужного), а потом героически с эти курятником разбирается. Я предпочитаю заранее распихать свё по своим местам. Что получается? Сравните два кода взаимодействия панелей. Добавлено через 15 минут
0
|
||||||||
|
Модератор
|
||||||||||
| 24.01.2021, 14:59 [ТС] | ||||||||||
|
Но ни как не как о инструменте построения ПРИЛОЖЕНИЯ. В этой же статье есть единственный пункт касающийся не только GUI, а приложения в целом привязка данных:
Покажите где в вашем коде вы используете Контекст Данных и Привязки (Binding) к нему. По второй ссылке METANIT.COM | Руководство по WPF, в основном описывается так же архитектура GUI. Но не только. Прочитайте главы: Глава 5. DependencyObject и свойства зависимостей Глава 6. Модель событий в WPF Глава 7. Команды Глава 10. Привязка Глава 13. Шаблоны элементов управления Глава 14. Работа с данными Глава 21. Паттерн MVVM Глава 22. SQLite в WPF | MVVM и SQLite Добавлено через 2 минуты Я просил показать привязку самих UI элементов, а не их вложенных итемов. Где вот эта привязка?
Burlak1951, ещё раз повторяю вопрос:
0
|
||||||||||
| 24.01.2021, 15:49 | ||||
|
if (lst_Entity != null) { //-- Флаг размера выборки lbl_ФРВ.Visibility = (lst_Entity.Count >= гп.max_Выборка) ? Visibility.Visible : Visibility.Hidden; oc_Entity = new ObservableCollection<row_Entity>(lst_Ent ity); lst_Entity = null; dgv_Entity.ItemsSource = oc_Entity; if (oc_Entity.Count != 0) dgv_Entity.SelectedIndex = 0; } Добавлено через 5 минут
0
|
||||
|
Модератор
|
||||
| 24.01.2021, 16:29 [ТС] | ||||
|
Это экземпляр объекта (или класса) Binding. Покажите где вы задаёте Контекст Данных, то есть значение свойству DataContext и где у вас Привязка (Binding) к нему. Напротив, я несколько раз писал, что что вы можете делать как вам заблогарусудится. Речь идёт только об оценке качестве кода. Качество вашего кода - ниже плинтуса. Даже не в концепции WPF, а просто для C#. Но вас ваш код устраивает - ну, и слава богу! Я только не пойму зачем вы здесь, в этой теме что-то пишите, если вопросы КАЧЕСТВА кода вас не интересуют?
0
|
||||
| 24.01.2021, 17:10 | |
|
0
|
|
|
Модератор
|
|||||
| 24.01.2021, 17:23 [ТС] | |||||
|
Пример документирования моего кода: Простые реализации: Базовый класс для ViewModel - BaseInpc Добавлено через 4 минуты Бриву Окаму оставьте ему самому - Умные слова смысл которых до вас самого не дошёл. В данном случае, все ваши аргументы вызваны только желанием оправдать отсутствие у вас базовых знаний. Вы просто не знаете азов и пытаетесь при этом "скорчить хорошую мину": "А оно мне и не надо!". Если это не так, то покажите, что вы УМЕЕТЕ реализовать туже самую задачу без использования CB. И только потом вы сможете аргументировать сравнив два этих варианта, почему конкретно для этой задачи вариант с CB лучше. Добавлено через 6 минут
1
|
|||||
|
Wanna be serious
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
|
||
| 24.01.2021, 17:54 | ||
|
2
|
||
| 24.01.2021, 18:54 | ||||||||||||
|
а) Используем дополнительный объект класс
0
|
||||||||||||
|
Модератор
|
||
| 24.01.2021, 19:06 [ТС] | ||
|
И потом обосновывайте чем она хуже по сравнению с вариантом в CB. Пока все ваши аргументы это только подтверждение ВАШИХ НИЗКИХ ЗНАНИЙ и неумения сделать по иному.
0
|
||
| 24.01.2021, 23:05 | |||||||
|
Здесь Вы показали свою реализацию. Это моя
У меня есть дополнение к MVVM (а-ля бритва Оккама) - Не нужное должно быть уничтожено. Покажите Вашу реализацию. Вот моя, удаляет не нужную панель Фильтра. при.uc_Удалить(); //-- Удалить верхнюю (активную) панель
0
|
|||||||
|
Модератор
|
||
| 24.01.2021, 23:41 [ТС] | ||
|
Для этого покажите ВАШУ реализацию РЕАЛЬНОЙ задачи с ПРАВИЛЬНЫМ кодом, то есть без CB и соблюдением правил ОПП и Net. А потом на этих двух ВАШИХ реализациях приведите аргументы по какой причине для вашей задачи лучше подходит реализация
0
|
||
|
управление сложностью
|
||||||||||||
| 25.01.2021, 07:58 | ||||||||||||
|
0
|
||||||||||||
| 25.01.2021, 14:03 | |||
|
Покажи реализацию "Не нужное должно быть уничтожено" в рамках MVVM. UserControl завершил свою работу и может (должен) быть уничтожен.Но когда нибуть потом может заработать повторно. Давайте сравним моё невежество и ваше супер просвящённость на примере кодов реализации достаточно простого примера - есть сущность справочника Отделы. В базе даных сущности предсталены записями в таблице. Функции взаимодействия клиент-приложение стандартные - "SELECT, INSERT, UPDATE, DELETE". У меня сей функционал реализован UserControl. Визуально выглядит так, как на слайде Код своей реализации готов представить немедленно.
0
|
|||
|
|
||||||||||||||||||||||||||||||||
| 25.01.2021, 14:24 | ||||||||||||||||||||||||||||||||
![]() UPD: Чета спойлеры не сработали, пришлось убрать
0
|
||||||||||||||||||||||||||||||||
| 25.01.2021, 14:31 [ТС] | |
|
0
|
|
|
управление сложностью
|
||||
| 25.01.2021, 14:35 | ||||
|
Добавлено через 3 минуты
0
|
||||
|
Модератор
|
||
| 25.01.2021, 14:36 [ТС] | ||
|
А вот вы ещё не доросли до сравнения, поскольку все ваши аргументы это только оправдания отсутствия элементарных знаний не то, что WPF, а даже C# и ООП.
0
|
||
|
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,775
|
|
| 25.01.2021, 14:54 | |
|
Andrey-MSK
Пара вопросов: 1. Зачем VM регистрируются в контейнере зависимостей, если они потом всё равно создаются явным образом через 'new GPEditDialogVM(genPlan)'? 2. Зачем кнопкам в разметке явно задаются 'x:Name', тогда как далее эти имена в разметке не используются? Где-то во вспомогательных сервисах на это какая-то логика привязана?
0
|
|
| 25.01.2021, 14:54 | |
|
В каких случаях использовать обращение self::, а в каких $this. В чём разница между ними? В каких случаях уместно применять F-критерий, а в каких - эмпирическое корреляционное отношение?
В каких случаях нужно использовать подключаемый уровень, а в каких автономный В каких случаях надо создавать индексы к полям, а в каких - нет? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|