огромная благодарность! такие уроки на вес золота, а Вы бесплатно со всеми поделились знаниями, дай Бог Вам здоровья! Чтобы Вы встретили таких же добрых людей, как и Вы сами!
@hrandron3 жыл бұрын
Я начинающий (пилю программу для управления и вывода данных на ПК из самодельного устройства). Столько перечитал инфу в инете, столько пересмотрел роликов на ютубе, но только у вас наконец-тось понял что такое привязка, как создавать команды. Спасибо.
@someelse9894 жыл бұрын
Какая редкость, контент на подобную тему, ну очень мало. Павел, спасибо!
@Shmachilin4 жыл бұрын
Сам собирал по крупицам...
@uporka69242 жыл бұрын
Согласен, давно искал что то подобное.
@aRRma994 жыл бұрын
Это реально шедевр!!! Самое лучшее что можно посмотреть по WPF+MVVM в ру сегменте!!
@dmitriialeksandrovich45652 жыл бұрын
+++
@10011byrbon Жыл бұрын
В этом плейлисте чуть ли не 50 часов лекций. Столько материала, что аж страшно) Хочется все изучить, но так как новичок, то дается сложновато пока. Буду ковырять помаленьку, спасибо за такой контент.
@konstantinewhite6144 жыл бұрын
Спасибо! Наверно лучший материал по данной тематике, по крайней мере в Ru-нете!
@yanus1744 жыл бұрын
2:20 Настройка студии VS 6:30 Настройка Visual studio code 14:25 Создание локального репозитория, и публикация в GIT 27:01 Создание инфраструктуры приложения MVVM 33:00 Пример MVVM приложений 40:00 Готовые Nuget пакеты MVVM 41:15 MVVM Prism 42:30 Базовый класс модели представления 51:00 Основная модель представления, для главного окна 51:55 Добавляем интерфейс IDisposable к классу ViewModel для примера реализации 1:01:30 Binding модели представления в xaml 1:46:00 Создание новой ветви из коммита 1:53:00 Создание кнопки MVVM 2:02:00 Базовый класс команды 2:09:00 Создание команды ЛямдаКоманд (Павел так ее называет) 2:17:00 описание команды в модели отображения 2:22:16 Определение отдельной команды 2:37:00 Привязка команд к объектам WPF, которые не поддерживают команды 2:42:00 Вынос команд в отдельные ресурсы 2:46:00 Иконки как шрифт (классная тема, если бы не увидел, не поверил бы) 2:58:00 Material Design 3:08:00 Http запросы 3:19:25 Построчное извлечение данных из источника, если объем информации большой 3:32:19 Извлечение данных в виде кортежа 3:47:08 Модели данных MVVM 3:53:00 OxyPlot WPF
@ssayless2 жыл бұрын
Полный курс по WPF с прекрасными сопровождающими комментариями, примерами, да еще и бесплатно! Год копаюсь в данной теме и это определенно лучший материал. Спасибо огромное за такой титанический труд!
@Shmachilin2 жыл бұрын
Буду рад если Вам это пригодится и Вы, в свою очередь, научите этому кого-то.
Живешь такой, потихоньку ковыряешь C#, заказы на фрилансе небольшие делаешь по фану. Думаешь, "вроде как, я программист". Ага. Посмотрел 4 часа на одном дыхании, и понял, что тебя обоссали ))) Если без шуток, огромная благодарность за контент! Столько моментов раскрыто, доселе неведомых.
@Shmachilin4 жыл бұрын
А сколько у меня таких моментов было с подобным ощущением... и сколько ещё будет...
@evilgamer25037 ай бұрын
Это я когда на работу в ит пришел
@TheKanstantsin3 жыл бұрын
Павел, огромнейшее спасибо и благодарность. Очень крутой материал! По данной тематике его вообще в принципе очень мало и практически невозможно собрать все в единое целое, а здесь все как на ладони, причем на открытой ладони, не зажато в кулачке)))))). Необыкновенная щедрость!)))
@Shmachilin3 жыл бұрын
Пишите вопросы.
@fumbo98992 жыл бұрын
С такими знаниями, вам вполне можно создавать свои платные курсы по обучению людей. Код на высшем уровне)
@argentmize3 жыл бұрын
В кои-то веки ютуб нормальный ролик порекомендовал. Жаль только намного позже, чем это было нужно. Был вынужден начать с mvvm light, чтобы доделать программу, теперь вернулся к дефолтному wpf,и эти записи очень кстати, чтобы разобраться в кишках 😁
@oldschool24453 жыл бұрын
Огромное спасибо! Очень крутой материал, аж голова распухла )) Вдумчиво разбирал лекцию 2 дня, чтобы всё запомнить и потренироваться. Буду смотреть следующие. Просто информационный клад.
@Shmachilin3 жыл бұрын
У кого-то же хватает терпения всё это просмотреть...
@user-ez3un5nh9r Жыл бұрын
@@Shmachilin Получаю огромное удовольствие, от души благодарю!
@MagistrTNT3 жыл бұрын
Это лучшие видео по теме из всего , что я видел!!! Особое спасибо за науку по правильной организации структуры проекта.
@suiqrim2 жыл бұрын
Большое спасибо за целую серию очень полезных видео. Никак не мог понять патерн MVVM, но ваши видео очень помогли мне и я достаточно быстро освоился. Ещё бонусом к MVVM досталась настройка дизайна разных элементов WPF.
@positivemoody3 жыл бұрын
Какой вы молодец проводить уроки по средствам трансляции в Ютубе.
@ЯГречка3 жыл бұрын
Вот просто спасибо, что ты есть, Павел! Спасибо, что ты создал канал на ютубе! Спасибо, что ты записал видосы по MVVM! 3 дня убил на то чтобы разобраться с тем как привязать коллекцию к DataGrid и просто вот сделал привязку к заголовку как ты и по альтернативе к коллекции и все чудесным образом заработало СПАСИБО!
@user-hv8kp2oh6f3 жыл бұрын
Спасибо большое! Достаточно подробно, но о многом, с пояснениями и доходчиво! Большая благодарность!
@bonintimo3 жыл бұрын
Просмотр ОТ и ДО, т.е. ВСЕ %) Лайк за работу!
@xzenter3 жыл бұрын
Большое спасибо! Лучший мастер класс и не только по MVVM! Ваш труд мне очень помог, желаю успехов.
@user-ex7eh4js9o2 жыл бұрын
Внесу свои пять копеек. Огромное спасибо за такой материал. Понравилось, что вначале был разбор инфраструктуры проекта. Вообще, тема архитектуры это еще на целый стрим в 5 часов потянет). Еще раз благодарю.
@nikitaisyuk86303 жыл бұрын
Очень рад что нашел настолько подробное видео по данной теме. Спасибо!)
@gredar772 жыл бұрын
Спасибо вам огромное. Много моментов, которые были непонятны при изучении построения приложений с помощью WPF в рамках MVVM, становятся ясны. Подача очень приятная.
@VyacheslavTamplier2 жыл бұрын
Павел, огромное спасибо за такой замечательный материал! На русском (да, и возможно, на английском) не найти такой подробный разбор паттерна MVVM в сети интернет, имхо. Также Вы довольно подробно разбираете другие аспекты разработки ПО, настолько комплексного подхода я еще не видел, и воды по минимуму, только самое необходимое с полезными отвлечениями! Продолжайте в том же духе и у Вас всегда будет благодарный слушатель-программист. По прошествии времени появился еще один момент, при котором программа сваливается в исключение. Появились регионы в названии которых тоже присутствует запятая, это - "Saint Helena, Ascension and Tristan da Cunha" и "Bonaire, Sint Eustatius and Saba", надо и их учитывать при парсинге csv-файла. Это для тех, кто столкнется с этой проблемой в настоящем и будущем.
@Shmachilin2 жыл бұрын
По ходу надо отдельным стримом делать нормальный парсер csv.
@VyacheslavTamplier2 жыл бұрын
@@Shmachilin Вариант решения проблемы использовать регулярные выражения (может не лучший вариант, но рабочий). Добавить паттерн pattern, метод ParseStringCSV и немного изменить методы GetDates() и GetData(): private const string pattern = @",(?=\S)"; //..... private static String[] ParseStringCSV(string input, string pattern) => Regex.Split(input, pattern); private static DateTime[] GetDates() => ParseStringCSV(GetDataLines().First().ToString(), pattern) .Skip(4) .Select(s => DateTime.Parse(s, CultureInfo.InvariantCulture)) .ToArray(); private static IEnumerable GetData() { var lines = GetDataLines() .Skip(1); foreach (var line in lines) { var row = ParseStringCSV(line, pattern); var province_name = row[0].Trim(); var country_name = row[1].Trim(' ', '"'); var counts_many = row.Skip(4).Select(int.Parse).ToArray(); yield return (country_name, province_name, counts_many); } }
@f.ingenia3 жыл бұрын
Павел благодарю! Отлично всё объясняете. Очень полезное видео.
@user-ed5zh5sl3s3 жыл бұрын
Отличная подача материала. Спасибо!
@Blackfoxx7972 жыл бұрын
Просто клад нашла!! Здорово. Спасибо. Разбираюсь в лекции) После разбора иду дальше смотреть
@user-lv3sy9zx3d2 жыл бұрын
Очень крутой вебинар! Собираюсь посмотреть все видео по wpf mvvm
@zheltov_aleksey4 жыл бұрын
Очень круто ! Спасибо тебе
@alexkot9849 Жыл бұрын
Спасибо Дмитрий за Ваш урок!
@maxsoul757 Жыл бұрын
вау, я наткнулся на потрясный контент, спасибо!
@remontunasdotru2 жыл бұрын
Спасибо вам за объяснение. Все кристально понятно!
@Serhii_lolovich3 жыл бұрын
Очень помогло понять mvvm, спасибо
@toshmatov Жыл бұрын
Очень достойно, благодарю за уроки!
@user-vg6gu8hc6w4 жыл бұрын
Бро круто! лайк и подписка однозначно! не останавливайся
@Shmachilin4 жыл бұрын
Благодарю!
@user-vg6gu8hc6w4 жыл бұрын
@@Shmachilin Единственное с начала 3 часа понял что урок для новичка сложноват ( Просто повторяю не понимая зачем это делается... И даже не понимаю имеет ли смысл смотреть дальше при таком раскладе... Ибо инфа из за непонимание объемной картины в целом просто не усваивается (((
@Shmachilin4 жыл бұрын
Есть такое. Скорее это для тех, кто уже не пугается конструкций языка, успел поработать с WinForms и слышал что такое паттерны проектирования.
@user-vg6gu8hc6w4 жыл бұрын
@@Shmachilin посмотрев примеры попроще и со второго захода с осмыслением дошёл до 3 часа! Хочу сказать что контент бомба! На других видео либо умышленно, либо по незнанию упускаю много мелочей,. С тем же биндингом, Прям спасибо большое ещё раз за такую годноту !
@Shmachilin4 жыл бұрын
@@user-vg6gu8hc6w задавайте вопросы! А то скучно...
@23tmsektant2 жыл бұрын
Спасибо за контент)Посмотрел пока что первую часть(и повторил конечно же её) Очень доступно рассказываете)
@Shmachilin2 жыл бұрын
С csv проблем не возникло?
@23tmsektant2 жыл бұрын
@@Shmachilin нет.Проблема была с графиком, т.к. последняя версия OxyPlot.WPF ,видимо , значительно отличается от той,что была на видео.Код с видео на ней у меня не работал. Поэтому я установил старую версию пакета м все заработало)
@vyachgusev8 ай бұрын
@@Shmachilin начал проходить ваши видео и как раз возникла ошибка "System.FormatException: "Unput string was not in a correct format" вот здесь "var counts = row.Skip(4).Select(int.Parse).ToArray();". Пока разобраться не удалось, в чем причина. Когда я полный 0, даже не удивляюсь..) Это тот момент, когда вы учите структурировать данные с гитхаба института
@vyachgusev8 ай бұрын
Все, почитал комментарии, увидел, что там добавились данные, все получилось! Мне бы такого препода, как вы! А то у меня вообще все тухло с этим. Приходится самообразованием заниматься. Через полгода сдавать тему по диплому, а я то одно то другое смотрю и пробую учиться. В итоге понимания в программировании никакого совершенно. Надеюсь, что после ваших уроков я все таки смогу, что нибудь сделать и не лопухнуться... Спасибо ВАМ огромное!
@user-su9dx4wh6z7 ай бұрын
Шедеврально!!!!
@svetlanachernova97402 жыл бұрын
Спасибо шикарное видео!!!! Очень полезное!
@yz777zhumabayev62 жыл бұрын
Спасибо за видео очень много интересного
@user-jd5yu5lc2k3 жыл бұрын
Спасибо большое!
@user-ey8tv3pf7r2 жыл бұрын
Спасибо за ролик , только не прекращайте выпускать ролики 🙏
@viruslab13 жыл бұрын
все четко ))) узнал кое что новое
@mnocard4 жыл бұрын
Очень круто! Спасибо!
@topProgrammer3 жыл бұрын
Круто, спасибо за труд. Продолжай!
@betnews-86163 жыл бұрын
Вы очень круты!!! Спасибо большое!
@dmitriialeksandrovich45652 жыл бұрын
Вы просто бог))
@Rueslan4 жыл бұрын
Действительно, хорошее изложение. Я ток начал учить мввм, это видео прям прояснило многие моменты. Но я понял что ничего не смыслю в программировании(
@Shmachilin4 жыл бұрын
Когда-то я думал, что никогда и ни за что не буду программировать...
@PsychosocialBastard3 жыл бұрын
@@Shmachilin что изменилось?
@Shmachilin3 жыл бұрын
Было время свободное и была книга (Delphi5 2000 год). Сел, вдумчиво прочитал... Потом был ВУЗ и вторая вышка по программированию.
@vyachgusev8 ай бұрын
@@Shmachilin а сколько вам лет, когда вы начали программировать? я правильно понял, что первая вышка была не по программированию?
@Shmachilin8 ай бұрын
@@vyachgusev Первая Вышка была по радиотехнике.
@pavelkross3 жыл бұрын
Спасибо! очень годный контент
@dreamr33713 жыл бұрын
Очень круто!
@eatpasta9763Ай бұрын
Наконец-то наткнулся на клад!
@McGewen9 ай бұрын
СУПЕР!!!!
@Ayub_Yaqub2 жыл бұрын
Класс спасибо
@kirillkuznetsov1592 жыл бұрын
Cпасибо!
@rdragon587 Жыл бұрын
Cool
@BraentR Жыл бұрын
Спасибо
@josbexerr51663 жыл бұрын
Gracias Mister....saludos de los andes peruanos.... la próxima activa el subtitulo....
@BrooDRay Жыл бұрын
Огромнейшее спасибо за плейлист по WPF! Есть ли у вас аккаунт на бусти? Возможно кто-то захочет вас отблагодарить монеткой, если у них есть лишняя)
@animagnoa3 жыл бұрын
при установки компонентов в начале урока был момент с установкой компонента "Git для Windows" - если я поставлю этот пункт - инсталятор не по.ерит уже установленную ранее git систему поставленную с официального сайта git? или это совсем другое?
@Shmachilin3 жыл бұрын
Вопрос хороший. Не пробовал. Обычно проблем с переустановкой Git в системе не возникало.
@andrevyakin3 жыл бұрын
Спасибо за Ваш труд. Очень емко и информативно. Но решение в консольном проекте «yield return line.Replace("Korea,", "Korea -");» = костыль. Когда я изучал материал, в файле кроме Кореи появилась еще «Bonaire, Sint Eustatius and Saba» и все кранты. Вылетает с исключением. Полтора часа потратил, пока разобрался в чем дело и исправил 😊
@Shmachilin3 жыл бұрын
Это не костыли. Это специально разложенные грабли!
@oldschool24453 жыл бұрын
Спасибо что написал в комментах, а то тоже после исключения полез сразу сюда посмотреть ))
@user-vg6gu8hc6w3 жыл бұрын
А как исправили))? Дайте наводку))? Реплейс вначале через ковычки сделали почистили, а потом через запятую? Или сразу ковычки ловили через контейс и бегали от начальной до конечной, стирая/заменяя запятые?
@user-vg6gu8hc6w3 жыл бұрын
@@oldschool2445 удалось исправить))?
@shagov252 жыл бұрын
рядом вот такие грабли положил) var i = 0; if (!int.TryParse(cell[4], out int res)) i = 1; var Counts = cell.Skip(4 + i).Select(int.Parse).ToArray();
@TheMilliardo3 жыл бұрын
Подскажите пожалуйсто как сделать команду для SelectedItem в ListView. А также если в также интиресует кнопка с коммандой внутри ItemTemplate listview что бы удалить выбраный по клику итем. В ListView нету Command для клика к сожелению(
@Shmachilin3 жыл бұрын
Вы можете использовать для этого либо триггеры из библиотеки devblogs.microsoft.com/dotnet/open-sourcing-xaml-behaviors-for-wpf/, либо InputBinding thomaslevesque.com/2009/03/17/wpf-using-inputbindings-with-the-mvvm-pattern/
@bexoldershow43433 жыл бұрын
Спасибо за видео, лучшее что есть про mvvm на русском языке!
@HotCrusnic3 жыл бұрын
Можно ли во вьюмодели сделать проперти без явного объявления приватного поля?
@Shmachilin3 жыл бұрын
Модно. Но работать будет не шипко быстро. Для этого объявляет либо в этом же классе, либо в базовом словарь, ключом которого будет имя Свойства, а значением - значение свойства. И делаете два protected-метода: GET и Set, обращающиеся к этому словарю.
@user-eb5dg7pg6l3 жыл бұрын
Огромное спасибо за видео!!! В используемом файле в колонке Province/State появилась запись "Bonaire, Sint Eustatius and Saba" пришлось добавить в строчку yield return line.Replace("Korea,", "Korea -").Replace("Bonaire,", "Bonaire -") Но получается теперь при добавлении в таблицу таких записей приложение будет падать Может кто нибудь знает как это исправить может с помощью регулярных выражений или еще как нибудь?
@Shmachilin3 жыл бұрын
Переписать модуль разбора csv так, чтобы можно было в значениях использовать кавычки без костылей.
@user-vg6gu8hc6w3 жыл бұрын
@@Shmachilin спасибо)) но вот ток кто бы знал как это сделать 😁😂
@Shmachilin3 жыл бұрын
Регулярные выражения, готовые библиотеки для работы с CSV...
@user-vg6gu8hc6w3 жыл бұрын
@@Shmachilin Павел хочу сам написать, но либо туповат либо мало опыта, 3 вечере голову ломаю, так и до конца не удалось сделать чтоб за работало)))
@user-vg6gu8hc6w3 жыл бұрын
@@Shmachilin в итоге написал спустя дня 4 раздумий как это сделать😁 а щас смотрю и думаю вот я тугой, там же все очевиднее некуда))
@just4n4cc174 жыл бұрын
Не подскажете, что делать, если нужно менять наполнение окна (весь грид) по логическому течению программы (будет несколько шаблонов грида для разных ситуаций, которые следуют одна за другой)?
@Shmachilin4 жыл бұрын
Добрый день! Можно поступить следующим образом: в приложении в окне может быть назначена главная модель-представления. Одним из её свойств может быть дочерняя модель-представления, которую главная модель может менять по своему усмотрению. В разметке окна можно добавить элемент ContentControl, свойство которого Content можно привязать к свойству "дочерняя модель-представления" у главной модели окна. Также в ресурсах, на пример, окна надо объявить набор DataTemplate'ов, где у каждого шаблона указать тип той модели-представления, которую он должен отображать. Таким образом, при смене значения свойства "дочерняя модель-представления" ContentControl будет искать шаблон, который будет отображать нужный тип данных - по сути, нужное отображение дочерней модели-представления. При этом всё это будет работать быстро и эффективно в согласии с шаблоном MVVM.
@just4n4cc174 жыл бұрын
@@Shmachilin Спасибо Вам огромное, все получилось. Отдельная благодарность за уникальный и качественный контент.
@SoferPeOZN3 жыл бұрын
❤
@user-il3ev4tm9n2 ай бұрын
Павел, а если панель контролов из wpf в winforms через user control и elementhost подрубить, то кнопки управления и слайдер из панели контролов также можно забиндить через viewmodelbase и inotifypropertychange? Делаю плеер на libvlc. Затормозил на этом моменте.
@Shmachilin2 ай бұрын
Скорее всего да. У ElementHost есть свойство DataContext.
@user-il3ev4tm9n2 ай бұрын
@@Shmachilin Благодарю! надо попробовать. Тяжко c# дается если честно и просто времени не хватает на обучение.
@Shmachilin2 ай бұрын
@@user-il3ev4tm9n Нужно больше практики и конкретных, полезных кому-то задач. И стараться уйти поскорее от WinForms.
@SergNeoSM3 жыл бұрын
Спасибо огромное за ваши труды. Лучший материал на русском языке!
@dannycyberwalker3 жыл бұрын
3:25:00 думаю здесь можно было использовать IAsyncEnumerable, тогда весь код был бы асинхронным.
@Shmachilin3 жыл бұрын
Или IAsyncEnumetable?
@dannycyberwalker3 жыл бұрын
@@Shmachilin Вот видишь, тяжело написать)
@user-dc9mi8bi6e Жыл бұрын
Стоит ли смотреть и пытаться понять эти уроки если опит работы с С# 3 месяца?
@TheDisJarpTV2 жыл бұрын
Действительно очень позновательно, это огрномный труд. Хотелось узнать только момент по поводу привязки команд. Дело в том что я искал решени кросплатформеных приложений на C#, и так получилось что начал изучать avalonia framework, который мне понравился. Так же он практически не отличается от WPF поэтому решили на основе ваших вебинаров разработать тестовое приложение на avalonia. И на моменте создания команд я не до конца понял для чего так сильно мучаться с интерфейсами, если можно привязать к обычным методам. Или это работает только на avalonia? И очень хотел бы узнать ваше отношение к данному framework, не будет такой ли вероятности что вы запишити курс по нему?
@Shmachilin2 жыл бұрын
Здравствуйте! Avalonia не смотрел... Времени не было. Но скорее всего идеи в нем те же. Что же касается интерфейсов, то это обеспечивает большую гибкость в использовании.
@user-vg6gu8hc6w4 жыл бұрын
Павел а можете подсказать почему Binding не видит комментарии ? у вас на видео Они видны, или это все решарпер а стандартными средствами видимость ограничена в пределах кассового наследования ?
@aRRma994 жыл бұрын
Да стандартный редактор VS убогий и много чего не показывает. Ставьте решарпер.
@user-vg6gu8hc6w4 жыл бұрын
@@aRRma99 дак решарпер денежки просит 😎
@aRRma994 жыл бұрын
@@user-vg6gu8hc6w на торрент загляните
@user-vg6gu8hc6w4 жыл бұрын
@@aRRma99 серьезно ))?
@Shmachilin4 жыл бұрын
Тяжёлые наркотики покупать только у дилера!
@user-jj4bn2zd7d2 жыл бұрын
Здравствуйте! Павел, подскажите, пожалуйста, я установил пробную версию решарпера, но, как я понял, там из коробки нет таких шаблонов, как notyfprop, цвета шрифтов другие и тд. Попытался покапаться в настройках, но их там настолько много, что голову сломаешь + еще расширения свои собственные. Можно ли как-то Ваши настройки решарпера получить или видео небольшое запилить по его возможностям?
@user-jj4bn2zd7d2 жыл бұрын
Всё, спасибо, нашел в 3 части от Павла ссылку на шаблоны Мало ли у кого такой же вопрос возникнет: "Да. Скачать шаблоны можно отсюда: github.com/Infarh/CV19/files/5629522/ReSharper.Templates.zip"
@user-vg6gu8hc6w4 жыл бұрын
Павел а в самом конце в упоминаете о чтате в телеге что за чат )? в него можно попасть )?
@Shmachilin4 жыл бұрын
@GB_CSharp
@user-vg6gu8hc6w3 жыл бұрын
@@Shmachilin павел нет такого канала или группы ( во всяком случаи в поиске ее не выдает ) возможно закрыта в настройках приватности с приглашением по ссылки ((
@feitan87454 жыл бұрын
Здравствуйте, вы можете добавить субтитры к своей серии MVVM?
@Shmachilin4 жыл бұрын
Здравствуйте! Пока наверное нет... не готов.
@amoe43334 жыл бұрын
Делаю все тоже самое но на моменте записи MainWindowViewModel: ViewModel выходит ошибка ''ViewModel" является пространство имен, но используется как тип." Не могу понять почему P.S Бред. Создал новый проект, все работает, а в старом почему-то нет... Ох уж этот visualstudio.
@Shmachilin4 жыл бұрын
По всей видимости у Вас пака, в которой лежат модели-представления, называется "ViewModel", а не "ViewModels". В результате было создано пространство имён "ViewModel" (в единственном числе), совпадающее с именем класса.
@Gifeest11 ай бұрын
Здравствуйте, подскажите как самому создать шаблон для генерации кода? 56:44
@Shmachilin11 ай бұрын
Какого кода?
@Gifeest11 ай бұрын
На 56:44 вы начинаете писать notyfprop, потом говорите что пока вручную, потом будете это делать автоматически. Вот именно этот шаблон как создать? @@Shmachilin
@alexandrvint70982 жыл бұрын
Павел, подскажите пожалуйста, где можно основательно изучить технологию WPF с применением шаблона MVVM? В книгах очень все скудно, особенно с DataGrid.
@Shmachilin2 жыл бұрын
В своё время я по Метанит и professorweb.ru изучал. Но с книгами по этому делу (на русском) беда - да...
@antonkulikov67264 жыл бұрын
Уроки топовые. Есть пара вопросов: а что если UI у нас на wpf ,а вью модель на C++/cli. Причем проект сам на C++,а UI на wpf как dll ка подключается к проекту на C++/CLI. Будет ли в dll класс application,или может его можно как-то создать,через расширения разметки? Вью модель придется установить явно окну через. Data context? Спасибо!
@Shmachilin4 жыл бұрын
У Вас есть интерфейс пользователя (UI) - визуальная часть. А также может быть что угодно в любой форме написанное хоть на C++, хоть на Delphi, хоть веб-сервис. Для приложения это всё можно выделить в понятие "модели". И для того чтобы "подружить" "модель" с UI можно взять "модель" и обернуть её в оболочку - модель-представления. Давно принял для себя стратегию поведения: если что-то не получается сделать "в лоб", то надо уходить в абстракцию добавляя новую оболочку которую я могу контролировать. Создать класс-модель поведение которого я могу определить так как мне надо и внутри этого класса уже выполнить управление над тем объектом, который надо контролировать. А снаружи я получу интерфейс моего класса в том виде, в котором он мне нужен. (Паттерн Фасад это вроде бы я "изобрёл" в своё время). Также и тут. Если у Вас есть какая-то вью-модель, но она Вас по каким-то причинам не устраивает, то создавайте над ней оболочку - ещё одну вью-модель и уже эту модель-представления передавать в UI.
@antonkulikov67264 жыл бұрын
@@Shmachilin да . Именно так я и делаю. А можно ли класс application в dll на wpf в таком случае(например в вызове управляемого кода на C# из неуправляемого на C++) определить (то есть именно в dll-ке)?
@Shmachilin4 жыл бұрын
Нет ничего невозможного. Вопрос лишь в числе граблей на которые потребуется для этого наступить. Вот только зачем? Зачем тащить интерфейс внутрь логики?
@antonkulikov67264 жыл бұрын
@@Shmachilin тут такое дело... Есть проект на c++,с кучей легаси. К сожалению qt использовать нельзя. Поэтому в плане интерфейса выбора не так уж и много:либо mfc,но это та ещё боль. Либо wpf, но приходится как раз создавать абстракцию в коде c++/cli вью модель, которую и подсовывать ее. Вот такой вот колхоз...
@Shmachilin4 жыл бұрын
А главным запускаемым проектом должен быть обязательно проект на c++?
@user-qz1uh9fj6l2 жыл бұрын
Добрый день! Я просмотрел половину видео и местами бывает не совсем понятно. Хотелось бы узнать для людей с каким уровнем знаний рассчитан данный урок? И достаточно ли будет этих знаний, чтобы трудостроиться в IT компанию ?
@Shmachilin2 жыл бұрын
Здравствуйте! Ну как минимум требуется уметь отличать абстрактный класс от интерфейса и знать базовое представление о паттернах проектирования (что они хотя бы есть...) Достаточно ли этого будет для трудоустройства сказать сложно.
@TheMilliardo3 жыл бұрын
Подскажите пожалуйсто как забиндить TextBox к свойству типа double с UpdateSourceTrigger=PropertyChanged? При PropertyChanged не получаеться искользовать "точку". Я нашел где то решение на 3-4 класса ... Может быть есть что то по проще и короче?
@Shmachilin3 жыл бұрын
Есть такой костылик: добавить небольшую задержку на ввод следующей за точкой цифры. Text="{Binding TestValue, UpdateSourceTrigger=PropertyChanged, Delay=100}" Если пользователь не успеет за 100мс ввести цифру, следующую за точкой, то значение из свойства TestValue перечитано и точка будет отброшена. Задержку можно подобрать так как будет удобно.
@user-lv3sy9zx3d2 жыл бұрын
С помощью каких инструментов вы рисовали графики в приложении для института 33:25?
@Shmachilin2 жыл бұрын
OxyPlot
@Shmachilin2 жыл бұрын
www.nuget.org/packages?q=OxyPlot.Contrib.Wpf
@Saveaaa3 жыл бұрын
У меня 2 вопроса. В приложении главное окно, в котором реализованно переключение между 5 пейджами. в каждом page по 2 listView и 1 datagrid , 3 диалога для добавления данных , 1 для вывода сообщений, плюс поля для отображения доп информации при выборе какой либо строки, диалог на удаление, сюда же biningи visibl и enable и на selectValue. Так вот это тонна биндингов и переменных. такая тонна, что уже кажется , что что-то пошло не так и это бред. Это норм для mvvm с сложным ui? Если это можно назвать сложным. Или я что то не так делаю? И второй вопрос- у вас в программе для самолётов было много окон , которые зависили от графика и информация в них отображалсь исходя из графика. Как и наоборот когда вы нажимали на плей на окне с приборами все начинало двигаться, включая график. Как это реализованно? Это дочерние окна?
@Shmachilin3 жыл бұрын
Добрый день! Вы можете разбивать представление на вложенные элементы - выделять повторяющиеся части в отдельные компоненты. И да, привязок там может быть очень много. А в том приложении есть объект плеер, который "двигает" время, есть объект "сервер индикации", который ловит изменения времени в плеере (обрабатывает событие), читает данные из контейнера значений и отсылает данные клиентам. Клиенты имеют набор свойств к которым привязываются визуальные индикаторы.
@Saveaaa3 жыл бұрын
@@Shmachilin когда открывается новое окно с клиентом . Вы туда передаете DataContext ? Или как новые окна получают увеломления о событиях или новые данные?
@Shmachilin3 жыл бұрын
Когда открывается новое окно, то для него создаётся его собственная модель-представления. Модель-представления дочернего окна может подписаться на события модели-представления родительского окна. Либо модель-представления родительского окна может сохранить себе ссылку на модель-представления дочернего окна и передавать ей данные.
@Saveaaa3 жыл бұрын
@@Shmachilin понятно, спасибо
@Shmachilin3 жыл бұрын
Отпишитесь по результатам.
@alexandrsharp9202 жыл бұрын
а какие у вас дополнения для студии ? в частности внизу что то похожее на счетчик ресурсов
@Shmachilin2 жыл бұрын
Справа снизу информацию выводят РеШарпер и PerfWatson Mon marketplace.visualstudio.com/items?itemName=PaulHarrington.PerfWatsonMonitor-9621
@alexandrsharp9202 жыл бұрын
@@Shmachilin спасибо!
@damascake2 жыл бұрын
Ставь лайк, если ты на 3:40:00 тоже кричал автору в монитор, что он уже распарсил строку, у него уже массив, кавычки можно удалять.
@abrajmek_zalilov2 жыл бұрын
Здравствуйте, автор! Спасибо за Ваши старания. Подскажите пожалуйста, на сколько это всё актуально на сегодня, ведь sdk уже и 5.0 и 6.0 уже существуют... Надо ли мне обязательно и 3 версию ставить?
@Shmachilin2 жыл бұрын
Здравствуйте! Всё актуально. Используйте последнюю версию Visual Studio и SDK .Net
@abrajmek_zalilov2 жыл бұрын
@@Shmachilin спасибо за оперативный ответ! Перехожу из вэба на C# и десктопные приложения, хочу заниматься разработкой VST и другой работой со звуком. Нашёл Ваш канал, он как никогда кстати. Хороший вход... Уж не Гоша Дударь, прости г-ди.
@vyachgusev8 ай бұрын
@@Shmachilin я только сейчас присоединяюсь к прохождению ваших нереально крутых образовательных видео! а если уже .net 8.0 есть? его можно использовать? и спасибо за уроки! гоша дударь курит в сторонке...
@Shmachilin8 ай бұрын
@@vyachgusev там концептуально ничего не поменялось. Синтаксис интереснее стал.
@shlm36503 жыл бұрын
Как сделать отдельную команду "ChangeTabIndexCommand" , что бы можно было через "Window.Recources" ?
@Shmachilin3 жыл бұрын
У команды есть параметр. Можно передать TabControl в качестве параметра.
@enderhexfyreeve19002 жыл бұрын
как-то не получается добавить солюшн с несколькими проектами как это сделано на видио. у меня такое предупреждение: your solution contains files outside the solution folder which will not be included. затем если предупреждение проигнорить то папки гита создасца в проекте, а не в папке солюшн. что с этим можно сделать? и на 14:26 окошко по-другому выглядит. нет "отправить в github" хотя учетная запись гитхаба прикреплена. подскажите, что там надо в настройках поменять? vs studio 2019 16.10.0.
@Shmachilin2 жыл бұрын
Галку не ставили при создании решения что бы размещать проект в папке решения?
@enderhexfyreeve19002 жыл бұрын
@@Shmachilin точно. в ней и была проблема. она сама по умолчанию была. а как сделать чтобы кнопка публикации на гитхаб была в тимэксплорере как на видио? у меня публикация только через раздел меню git работает. в принципе не так важно откуда публиковать, но может если подскажете, то лучше пойму настройки студии.
@oliviacolins68563 жыл бұрын
Подскажите, каким образом можно отобразить данные в реальном времени не перезапуская программу? т.е. есть БД откуда берутся данные и отображаются в программе в момент запуска программы. Как только в БД попадают новые данные из вне, приложение их не отображает. Только при перезапуске программы... Подскажите, как можно сделать чтоб при изменение значений в БД, сразу это отображалось в программе?
@Shmachilin3 жыл бұрын
А к БД Вы как подключаетесь? Что мешает сделать кнопку/таймер и выполнить эту процедуру вновь в процессе работы программы и загрузить данные снова?
@oliviacolins68563 жыл бұрын
@@Shmachilin Спасибо, вроде на данном этапе разобралась. А так подключалась через EntityFramework, проблема была что получала от EntityFramework те же данные, а не обновленные и сделала кнопку обновить, как вы рекомендовали. Теперь думаю как реализовать все это дело через таймер, потому как не хочу получать данные при клике на кнопку обновить. Спасибо за очень ценный материал.
@hikkathon3 жыл бұрын
Пытался сделать свою команду "Свернуть окно приложения"(MinimizedApplicationCommand) для практики, не вышло( на прямую в xaml окна всё получается this.WindowState = WindowState.Minimized; а через команду не могу сообразить как хD
@Shmachilin3 жыл бұрын
Надо смотреть как Вы пытались её сделать... Надо либо ссылку на ГитХаб, либо хотя бы фрагмент кода. Иначе там много что может пойти не так.
@TbIPDblM Жыл бұрын
Технически все понятно, но я ахаюсь только с одним пунктом, делаю все как по видео создаю WPF проект, создаю реп заливаю на гитхаб, но при добавлении /Tests/ WPF и консольного проектов, их не видит гит (и в дальнейшем работая на др компе при получении реп папка tests пустая), либо они отображаются в проекте основном.
@Shmachilin Жыл бұрын
Галочку поставили в диалоге создания первого проекта о размещении всех файлов в одном каталоге? Ссылку на ГитХаб репозиторий дайте посмотреть.
@TbIPDblM Жыл бұрын
@@Shmachilin не ставил 😬🫤завтра свежим взглядом погляжу, спасибо 🫡
@Shmachilin Жыл бұрын
@@TbIPDblM ссылку скиньте.
@TbIPDblM Жыл бұрын
@@Shmachilin разобрался, при создании у меня первого проекта файл решения там же располагался, галочку снял, и все стало ок
@Shmachilin Жыл бұрын
Теперь и Вы знаете о этих граблях. Я бы руки оторвал тому кто эту галочку там разместил.
@user-gl1ti5op4v3 жыл бұрын
а почему поля классов с большой буквы? Просто такой стиль написания кода? Просто вроде общепринято с маленькой обозначать
@Shmachilin3 жыл бұрын
Для имён перечислений, структур, делегатов, классов, членов классов (полей, свойств, методов), а также входных переменных метода принят PascalCase. Для локальных переменных - lower_case. camelCase - это стиль Java.
@user-gl1ti5op4v3 жыл бұрын
@@Shmachilin спасибо, я просто смотрел и другие c# уроки, везде не много по разному
@kavelquu3 жыл бұрын
@@Shmachilin эм нет, во всех coding conventions (в том числе и от самих microsoft) lower_case никогда не использовался в C#. В C# используют только PascalCase и camelCase, lower_case нет
@user-ix4cm7ch5z Жыл бұрын
момент с textbox ,почему то он не в какую не менялся ,ненаписать не удалить что в нем
@Shmachilin Жыл бұрын
Где именно?
@user-ix4cm7ch5z Жыл бұрын
@@Shmachilin это уже вроде особо не нужно ,но сейчас пытаюсь кнопками влево вправо переключать ,не получается.Хотя вроде бы все прописал
@vanovano90563 жыл бұрын
Когда команда CloseApplicationCommand определена как класс в отдельном файле, то как ресурс она объявляется Как объявить ее ресурсом если она определена в ViewModel? Спасибо.
@Shmachilin3 жыл бұрын
Если она часть модели-представления, то зачем её надо "закреплять" в ресурсах? Есть ведь модель-локатор...
@vanovano90563 жыл бұрын
@@Shmachilin Если команда объявлена как отдельный класс, то экземпляр команды создается для каждого упоминания ее в разметке, чтобы этого не произошло мы используем ее как ресурс, т.к. в этом случае экземпляр команды создастся единожды. Когда команда часть ViewModel, то созданием команды рулим мы сами, создаем ее в конструкторе 1 раз. Правильно я понял?
@Shmachilin3 жыл бұрын
Через разметку никак. В коде - можно в ресурсы добавить что угодно. Один вопрос: а зачем?
@vanovano90563 жыл бұрын
@@Shmachilin Сейчас вопрос зачем уже не стоит. Сразу после просмотра это было не совсем понятно ;)
@oldschool24453 жыл бұрын
Немного не могу понять как менять свойства к которым мы делаем Binding из какого-нибудь метода, вот допустим свойство Status 1:50:20 которое тут показано, если я внутри своего метода создаю объект класса MainWindowViewModel vm = new(); далее устанавливаю свойству Status нужный текст vm.Status = "moy_text"; То при вызове этого метода сам текст в статус баре не меняется. Как правильно логикой менять значение свойств во ViewModel, чтобы элемент их сразу же отобразил после изменения.
@Shmachilin3 жыл бұрын
А где и зачем Вы создаёте MainWindowViewModel?
@oldschool24453 жыл бұрын
@@Shmachilin Создавал экземпляр MainWindowViewModel чтобы через него задать свойству Status какое-нибудь нужное мне значение (но так не сработало). Как мне сделать чтобы мой метод мог менять это свойство, а статус бар который прибинден к этому свойству после этого так-же мгновенно обновлялся.
@Shmachilin3 жыл бұрын
Вы не должны сами создавать эту модель. Её создаёт контейнер сервисов. Вам надо получить её экземпляр либо вытащив её из DataContext главного окна, либо из контейнера сервисов. Но скорее всего Вы в корне делаете что-то не так...
@oldschool24453 жыл бұрын
@@Shmachilin Вот смотрите для примера, я создаю новый класс class Testclass, в нём создаю метод TestMethod(), что мне нужно написать внутри моего TestMethod, чтобы изменить текст в статус баре, на какой-нибудь другой. (С учетом того что как в 1:50:20 у нас уже прибинден статус бар к свойству Status описанному в MainWindowViewModel
@Shmachilin3 жыл бұрын
Ваш класс должен быть либо сервисом приложения, зарегистрированным в контейнере сервисов. Тогда в его конструкторе Вы сможете добавить параметр TestClass(MainWindowViewModel model). Либо Вам надо получить доступ к главному контейнеру сервисов и из этого контейнера достать модель-представления главного окна.
@user-pm2zb1rb5b3 жыл бұрын
Подскажите, пожалуйста, есть ли исходники RRG-Express?
@Shmachilin3 жыл бұрын
Исходники есть.
@user-pm2zb1rb5b3 жыл бұрын
@@Shmachilin можете дать ссылку, пожалуйста? Очень заинтересовали некоторые функции, хочется посмотреть на реализацию)
@Shmachilin3 жыл бұрын
Ссылку дать не могу. Коммерческий продукт ГСС. Могу ответить на вопросы.
@wastegate7113 жыл бұрын
На рабочем столе заставка из Eve Online.
@Shmachilin3 жыл бұрын
Nemesis
@user-ek1rj2ry9e Жыл бұрын
WPF жив? Если да, то наверно сплошное легаси?
@Shmachilin Жыл бұрын
Вы с чего взяли?
@user-ek1rj2ry9e Жыл бұрын
@@Shmachilin я не знаю, вот и спрашиваю
@user-ne5mt6xg7y Жыл бұрын
😀I'm enjoying watching KZbin. foreach (var row in lines) { var province = row[0].Trim(); var country_name = row[1].Trim(' ', '"'); var counts = row.Skip(4).Select(Int32.Parse).ToArray(); //ERROR yield return (country_name, province, counts); } ERROR : System.FormatException:'input string was not in a correct format" What's the cause?
@Pincne11 ай бұрын
Hi, It is necessary to exclude a number of countries that fall out of the general view when selecting a row private static IEnumerable GetDataLines() { var data_stream = GetDataStream().Result; var data_reader = new StreamReader(data_stream); while (!data_reader.EndOfStream) { var line = data_reader.ReadLine(); if (string.IsNullOrWhiteSpace(line)) continue; yield return line.Replace("Korea,","Korea -").Replace("Bonaire,", "Bonaire -").Replace("Helena,", "Helena -"); } }
@wasknocked3 жыл бұрын
Стыдно - ничего не делать!!
@maxm10793 жыл бұрын
качественный материал, то что есть на itdvn невозможно слушать из за зелености самого доклачика и не поставленного голоса.