Уроки WPF. Паттерн MVVM
HTML-код
- Опубликовано: 12 мар 2016
- Четвертое занятие по WPF. Правильное разделение бизнес-логики и представления при помощи паттерна MVVM.
Поддержи развитие канала! money.yandex.ru/to/4100139057...
Qiwi Wallet +79534684569
Группа ВКонтакте: easycomp
Блог Алексея Лосева: losev-al.blogspot.ru
Полезное видео!! Отдельное спасибо, что помогаете другим становится лучше!!
Можно узнать зачем тут DependencyProperty? Свойства зависимости используются для поддержки привязок, стилей, анимаций и используются больше для создания UserControl ов. У вас класс PersonsViewModel не фигурирует в XAML коде ВООБЩЕ. Для решения этой задачи достаточно обычных свойств и реализованного интерфейса INotifyPropertyChanged.
Спасибо большое!!!
Очень понятно, доступно! Видео очень помогло начать!
Курс и правда очень интересный, у вас с коллегой получаются очень достойные уроки
Cпасибо за урок, очень позновательно!
крутяк) жду с нетерпением новых видео) особенно жду уроков по работе с графикой) например, как сделать возможность рисовать и изменять в приложении любые объекты)
Спасибо! Очень доступно)
Спасибо за урок, очень кстати. Лайк.
Спасибо за уроки!
Пожелание: подобные уроки, где рассматриваются определенные паттерны и механизмы взаимодействия между элементами приложения, хотелось бы видеть в формате 7-го урока ("Пример создания приложения"). То есть, вначале теория с диаграммами, а потом практика.
+ReasonX7 Да, уже записали в таком формате, как говориться, следите за обновлениями.
Полезно. Вообще считаю, что это лучше чем win forms!
Наконец-то!
СУПЕР!!!!!
Здравствуйте. Включил видео, чтоб играло на фоне, и тут услышал голос Галкина.
А я все никак не могла понять, кого же слушаю))
Расскажите про MVVM light toolkit. Какую инфраструктуру он создает в проекте и как ей правильно пользоваться?
А есть в планах, создание серии видео, где вы совместно разрабатываете приложение? Хотелось бы увидеть, как люди с опытом, работают вместе: как делятся задачи, какие требования к архитектуре приложения для возможности нормального распределения труда, как решается вопрос рефрактора и и.д.
+ReasonX7 Пока в планах такого нет, да и видео продолжительностью часов в 10 чтобы показать основные моменты маловероятно будут смотреть. А вот записать небольшие туториалы по командной разработке... Подумаем.
@@user-ib1xc8ic7n Я понимаю, что это уже некропостинг, но я бы посмотрел бы такое видео. Было бы очень интересно. А по поводу длительности: куча людей смотрит видео турниров по героям 3, а там и по 12 часов видео бывают и по 18=))
@@AnaRxistBoD Парное программирование в чистом виде не используем, а вот разбиение на задачи, это командный процесс. Аналитик пишет требования, разработчики разбивают его на задачи, задают уточняющие вопросы, оценивают их. Ну и потом каждый идет и решает свою задачу, обращаясь за помощью при затыке. Перед коммиттом еще ревью проводится, но это опять каждый за своим компьютером, переписка в комментариях к коду. Посмотреть как проектируется архитектура - тоже довольно скучно. Собираются люди, обсуждают требования, рисуют что-то на доске. Потом расходятся, рисуют что-то в редакторах, обмениваются, обсуждают, перерисовывают, собираются обсуждают какие езе требования есть, потом приходит совсем неожиданное требование, перерисовывают.Самое обидное, когда архитектуру приходится сильно менять когда уже код написан :)
Как будто вернулась на лекцию к Алексею Юрьевичу =)
Спасибо! Очень интересное и полезное видео.Если можно расскажите как с помощью DependencyObject управлять видимостью столбцов в DataGrid.
Хотелось бы хороших уроков по фреймворку Prism или MVVM Light.
+Макс Зимин
Или Catel
А зачем вообще нужен этот MVVM Light? Какие он даёт преимущества, чтобы можно было потерпеть неудобства связанные с его использованием?
Спасибо, интересный урок!
Но так работает быстрее!
If берет много ресурсов, и зачем делать отрицание И, когда можно сделать просто ИЛИ.
private bool FilterPerson(object obj)
{
Person pers = obj as Person ;
return string.IsNullOrWhiteSpace(FilterText) || pers == null || pers.LastName.Contains(FilterText) || pers.FirstName.Contains(FilterText);
}
ХОЧУ ЕЩЁ!!!!! хотя учитывая что последний урок был год назад, то продолжение не предвидится. Но на всякий случай подписался.
А Dem Bulson пускай свое видео сделает так как он считает нужным. Хотя вряд ли меня заинтересует видео в формате "это перетащите сюда, а здесь не забудьте поставить запятую..." Терпеть не могу когда много воды.
Круто, конечно, но как теперь эту фильтрующуюся коллекцию менять?
Какая комбинация клавиш меняет тип во всём куске кода, как на 5:07 ?
Правильно ли я понимаю что все данные лежат в window.DataContext и ViewModel туда подмешивает нужные значения, а Grid просто содержимое DataContex выводит?
Привет. А продолжения походу не будет?
В 2022 году смотрю, до сих пор актуально
Ну здрасьте приехали. А как же INotifyPropertyChanged? Новые депенденси проперти, обычно, добавляют в кастомные контролы, насколько мне известно
+Андрей Телешев О как, подскажете как это сделать?
+Антон Грибов В лекции с примером полной сборки приложения на MVVM будет и про INotifyPropertyChanged. Но если в двух словах, то INotifyPropertyChanged менее требователен по памяти, а Dependecy Property быстрее работает с Binding.
Алексей Лосев, подписался на Ваш Ютуб канал, хоть на нём нет видео).
Нам новичкам важно слышать мысли профи, мне так проще воспринимать материал. Жду Ваши видео.
При попытке присвоить обработчик ICollectionView.Filter к DataTable.DefaultView у меня стабильно выбрасывается следующее исключение:
"Необработанное исключение типа "System.NotSupportedException" в PresentationFramework.dll
Дополнительные сведения: Указанный метод не поддерживается."
IDE: Microsoft Visual Studio Community 2015
В чём причина?
не удалось найти тип или имя пространства имен icollectionview
Откуда взялся интерфейс ICollectionView ? Я подключал неймспейс System.Windows.Data его всеравно не находит.
Аааа он в пространстве System.ComponentModel
Дайте пожалуста совет начинающему програмисту. Стоит передо мной задача написать проект с использованием БД. Так вот вопрос: стоит ли мне изучать все уроки С# или можна пропустить или перескочить некоторые и изучить EF и LINQ сразу. Мне кажется что я не буду в своем проекте пользоваться наследованием и делегатами. Или у меня неправильный подход. Заразние спасибо за ответ и за видео которые Вы делаете.
+Svyatoslav изучение EF и LINQ автоматически приведет Вас к изучению наследования и делегатов.
Если, конечно, Вы будете изучать эти технологии серьезно, а не по верхам.
Поэтому я бы всё-таки посоветовал начать с наследования, делегатов, интерфейсов, множеств, лямбда-выражений, а потом EF и LINQ.
тяжело но питательно... очень
А как сделать ту самую связку между View и ViewModel, так чтобы View не знала о ViewModel? подскажите пожалуйста
Как подписываться на события согласно паттерну MVVM? Двойной клик по той же кнопке просто неприемлем, насколько я знаю.
А где нибудь есть уже готовые шаблоны всех элементов ? Не каждый может себе сделать красивый интерфейс.
Влад Касперович, есть множество различных готовых библиотек компонентов, шаблонов, например www.telerik.com/products/wpf/overview.aspx
mahapps.com/
Вроде попонятнее рассказано, чем перед этим читал про mvvm на сайте professorweb
почему забросили уроки?
Он патао, массивы називает коллекциями, а обекти класами
Не сталкивался с депендро пропертем подскажите в чем его преимущество чем если бы мы просто написали
string _FilterText;
public string FilterText
{
get{return _FilterText;}
get{_FilterText=value;//а дальше поизвести фильтрацию Items методои LINQ}
}
2:05 Как автор так быстро копирует строку с new Person?
ctrl+d
Поражают хэйтеры. Если вы знаете реализацию INotifyPropertyChanged, зачем вы вообще смотрите эти уроки? Значит все-таки заинтересовало ....
Тоесть научили как не надо делать, а как теперь правильно строить проект по патерну?
А у меня в VS 2017 при запуске программа выдает ошибку: "System.InvalidOperationException: Коллекция Items должна быть пустой перед использованием ItemsSource."
Скачуєте пакет Prism і цього всього не треба. Це так, чисто з метою ознайомлення
720p Серьезно?
Программирование - это просто.... Очень бл..ть, просто.
Это эквивалентно:
!( a || b) !a && !b
Хорошие видео, но мне так не нравится, когда говорят "вы так никогда не делайте, это только для примера", и ты в итоге не понимаешь потому что это учить не хочется, раз так все равно делать не надо, а как надо "мы потом покажем", ну почему сразу не показать как правильно
ничего не биндится. Повторяю строка к строке. Автор что-то умалчивает. Ссылка из XAML на свойство зависимости во ViewModele не работает. Свойство открытое. С такими уроками можно 300 лет учиться. Учусь 5-й год. Каналы типа "Программирование это просто" звучат издевательски. Обучение стоит больших денег. Учат толпу, индивидуального подхода нет, видеоуроки редко бывают удачные, в основном галопом по европам. Автор канала - двуличный лицемер.
Нахожу это видео бесполезным. Просмотр этого видео начинающими никак не поможет им осознать суть MVVM и применять его в своих программах. В лучшем случае они могут попытаться самостоятельно набрать приведенный здесь пример и потом долго размышлять что им дает этот подход. Заменить сетку на список в качестве элемента отображения и при этом ничего не менять в коде может и прикольно с точки зрения демонстрации независимости отображения от данных, но на практике никак не упрощает и не ускоряет разработку. Ну, разделили и что с этого? Планируем периодически зачем-то менять внешний вид окна, заменяя одни компоненты другими и при этом не трогать остальной код? А с первого раза нельзя так спроектировать UI, чтобы потом не требовалось его менять? И если не требуется его менять, то что мне еще дает этот паттерн. Может что-то и дает, но из этого видео это не очевидно.
Раздутое видео, для новичка, который умеет только с WinForms работать вообще информации 0
подскажите пожалуйста пытаюсь как в видеоуроке передать в CollectionViewSource.GetDefaultView объект типа List .. а там все равно null остается ..правда список из 8000 элементов.. но он пишет что там null в Items..
+MrIliaborisov Нужен кусок кода что вы делаете, задайте вопрос на форумах msdn.ru, если не я, то другие участники вам обязательно помогут.