я благодарен звездам, что нашел этот канал. я не мог найти ничего стоящего про MVVM на русском ютубе, да и при чем так подробно как здесь. этот канал теперь однозначно в моих подписках)
Павел, огромное Вам спасибо за Ваш труд. Посмотрев несколько Ваших уроков по MVVM очень многое понял, хотя раньше мне шаблон разработки казался чем то очень страшным. Да и объясняя основную тему, Вы попутно очень много чего показываете полезного. Я новичок в программировании, и порой найти стоящий урок или статью бывает очень сложно. А тут такое сокровище. Хотелось бы иметь такого наставника как Вы. Еще раз Вам спасибо!
Мужик! Ты крут. Спасибо. Не часто оставляю комментарии (обычно менее раза в год), но... Это настолько офигенное видео, что я восхищён) Настолько, что на гитабе у тебя +1 follorer)
Сначала испугался продолжительности видео, но посмотрел уже несколько и получил много новых знаний и ответы на вопросы «а почему так?», «а зачем это?» как раз года 4 не занимался WPF потому что мало было толковых уроков с примерами больших приложений. Большое спасибо 👍🏻
Record сами по себе не иммутабельные. Можно написать так: record Student { public string Name { get; set; } public double Rating { get;set; } } и это будет запись и её свойства можно будет менять.
Обработчик события - это делегат. Это просто ссылка на функцию, которая будет вызвана в момент возникновения (генерации) события. Ссылка на функцию (делегат) ни как не может определять - можно его вызывать, или нет. Делегат не может обладать свойствами (на пример локализуемым именем). Делегат не может сам по себе выполнять клонирование процесса своего вызова. А команда может. Команда - это оболочка над делегатом метода. А то и не одного... Это капсула, в которую можно поместить любую логику и присовокупить данные. А ещё поведение. К примеру, команда, будучи сделана асинхронной, может иметь дополнительную функциональность отмены выполняемой операции, может быть снабжена информером прогресса.
Павел, времени уже нормально так прошло, но все же попробую уточнить - 1:11:02 почему для методов команд CanExecute и Execute вы создаете абстрактные методы а не виртуальные?
Виртуальные не обязывают наследника переопределять их (можно override`нуть, а можно оставить как есть), а абстрактные обязывают наследника реализовать его.
спасибо ,буду знать теперь. Так же к этому уроку закрепили бы это ,и так же у меня переключение вкладок не работало.С чата подсказали добавить "field= value;" в "protected virtual bool Set(ref T field,T value, [CallerMemberName] string PropertyName=null) " ,после if и перед "OnPropertyChanged" . А так большое спасибо за уроки, планирую все пересмотреть,может что да отложится в мою головушку хD @@Shmachilin
Зашёл два года спустя, что бы сказать ОГРОМНОЕ СПАСИБО автору контента. Павел, спасибо вам огромное!
Только начал смотреть. Уже впечатлён подачей материала. Огромное спасибо!
я благодарен звездам, что нашел этот канал. я не мог найти ничего стоящего про MVVM на русском ютубе, да и при чем так подробно как здесь. этот канал теперь однозначно в моих подписках)
Павел, огромное Вам спасибо за Ваш труд. Посмотрев несколько Ваших уроков по MVVM очень многое понял, хотя раньше мне шаблон разработки казался чем то очень страшным. Да и объясняя основную тему, Вы попутно очень много чего показываете полезного. Я новичок в программировании, и порой найти стоящий урок или статью бывает очень сложно. А тут такое сокровище. Хотелось бы иметь такого наставника как Вы. Еще раз Вам спасибо!
Мужик! Ты крут. Спасибо. Не часто оставляю комментарии (обычно менее раза в год), но... Это настолько офигенное видео, что я восхищён)
Настолько, что на гитабе у тебя +1 follorer)
Сначала испугался продолжительности видео, но посмотрел уже несколько и получил много новых знаний и ответы на вопросы «а почему так?», «а зачем это?» как раз года 4 не занимался WPF потому что мало было толковых уроков с примерами больших приложений. Большое спасибо 👍🏻
Много материала по MVVM находил, но только это видео дало полное понимание паттерна MVVM. Спасибо за видео
Спасибо Вам за самые полезные и подробные видео!
Действительно, это лучшее видео по MVVM
шикарное изложение материала! просто топ
Спасибо. Очень качественный урок.
Класс 🤙
Огромное Вам спасибо.
Спасибо! Узнала много полезного.
Здравствуйте. Почему на 33:46 Dispose вызывается с false? Случится return и метод не будет вызван. В этом есть какой-то скрытый смысл?
странно, но сейчас там есть ещё "Bonaire, Sint Eustatius and Saba",Netherlands,12.1784,-68.2385, кроме Корей, почему её там не было 3 года назад..
Пожалуй, лучшее что я видел по теме MVVM на русском. Единственное, что омрачает - 720р(
ruclips.net/video/uMNYu0p3MP4/видео.html исходное видео должно быть в лучшем качестве.
сейчас наверное , чтобы свойства не мутировали, мы можем использовать иммутабельные DTO, по сути - Record , из C# 9, спасибо за видео
Record сами по себе не иммутабельные. Можно написать так:
record Student
{
public string Name { get; set; }
public double Rating { get;set; }
}
и это будет запись и её свойства можно будет менять.
@@Shmachilin , согласен
Так чем команды отличаются от обработчика событий? Не раскрыта тема, почему лучше пользоваться командами, обьясните, пожалуйста?
Обработчик события - это делегат. Это просто ссылка на функцию, которая будет вызвана в момент возникновения (генерации) события. Ссылка на функцию (делегат) ни как не может определять - можно его вызывать, или нет. Делегат не может обладать свойствами (на пример локализуемым именем). Делегат не может сам по себе выполнять клонирование процесса своего вызова. А команда может. Команда - это оболочка над делегатом метода. А то и не одного... Это капсула, в которую можно поместить любую логику и присовокупить данные. А ещё поведение. К примеру, команда, будучи сделана асинхронной, может иметь дополнительную функциональность отмены выполняемой операции, может быть снабжена информером прогресса.
Павел, времени уже нормально так прошло, но все же попробую уточнить - 1:11:02 почему для методов команд CanExecute и Execute вы создаете абстрактные методы а не виртуальные?
Виртуальные не обязывают наследника переопределять их (можно override`нуть, а можно оставить как есть), а абстрактные обязывают наследника реализовать его.
Что бы наследник обязан был определить свою логику. Метод CanExecute можно сделать виртуальным, возвращающим true.
Что происходит, когда в разметке указываешь в свойстве .Command ? Откуда берется экземпляр объекта?
Его создаст парсер XAML
С чем связан перезалив ? Стоит ли пересматривать ?
Порезали паузы, ускорили. Пересматривать не стоит.
oxy:plot ни вкакую не пишется ,только oxy:PlotView .И дальше не продвинуться из за этого
смог сделать все таки через oxy:PlotView ,но чуть по другому пришлось ))
Они перенесли функционал Plot в отдельный пакет OxyPlot.Contrib.Wpf. Если нужно построение графиков в WPF+MVVM, то достаточно подключать только его.
спасибо ,буду знать теперь. Так же к этому уроку закрепили бы это ,и так же у меня переключение вкладок не работало.С чата подсказали добавить "field= value;" в "protected virtual bool Set(ref T field,T value, [CallerMemberName] string PropertyName=null) " ,после if и перед "OnPropertyChanged" . А так большое спасибо за уроки, планирую все пересмотреть,может что да отложится в мою головушку хD @@Shmachilin