[C#] WPF MVVM. Реализация

Поділитися
Вставка
  • Опубліковано 21 гру 2017
  • Наш телеграм чат: t.me/bashkamen_YT_Chat GitHub: github.com/BashkaMen
    Telegram: @BashkaMen
    Discord канал: / discord
    Поддержка канала: secure.wayforpay.com/payment/...

КОМЕНТАРІ • 97

  • @user-rs3dl4id9g
    @user-rs3dl4id9g 4 роки тому +180

    Урок номер 1: изучаем букву А
    Урок номер 2: Учимся писать букву А
    Урок номер 3: Берём бозон Хиггса и рассчитываем массу частицы атома протонной звёзды, имея параметр полёта баллистической кривой в синусоидой плоскости без расчета угла искажения преломляющегося отражения от рефрактора гиперболы. Это так выглядит для начинающих.

    • @artyombelousovig4901
      @artyombelousovig4901 4 роки тому +13

      На самом деле , если переписать код в студию и потыкаться в него так - сяк , то (при наличии хоть мало мальски чугунной задницы) становится более - менее понятно

    • @zayarniy
      @zayarniy 4 роки тому +13

      На самом деле использование MVVM подразумевает хорошее знание C#. Это мощная технология, но она требует не маленьких начальных знаний.

    • @user-gu1fb7nu2e
      @user-gu1fb7nu2e 3 роки тому +1

      Ха-ха-ха... ЗАЧЕТ ))

    • @FabioBannet
      @FabioBannet 3 роки тому +7

      @@zayarniy Ну я на шарпе работаю уже год, WPF юзаю чуть меньше. Но большая часть работы MVVM для меня магия ) Реализовать, то я реализую. Но как оно передаётся - мозги сворачиваются - хотя тут всё просто.

    • @JoeSmith-ll9yn
      @JoeSmith-ll9yn 3 роки тому +1

      стоп, если третий урок это текущий - то я Вам не завидую
      я понял всё не смотря предыдущие

  • @roma9957
    @roma9957 10 місяців тому +4

    Раньше не любил MVVM и думал что это сложно и не было желания изучать эту технологию, но после этого видео всё стало понятно и легко.Спасибо тебе за видосы)

  • @-USER_NAME
    @-USER_NAME Рік тому +2

    Посмотрел несколько ваших видео , по началу как то настороженно отнёсся к методам ,но сейчас считаю что это одни из лучших видео-уроков по теме WPF

    • @BashkaMen
      @BashkaMen  Рік тому

      Спасибо, приятно

  • @lazycat8462
    @lazycat8462 2 роки тому

    Спасибо за видос. Давно не кодил на wpf и видео очень хорошо освежает память

  • @davidslutsky9495
    @davidslutsky9495 6 років тому +5

    Как сказала Баба Зина, BashkaMen большая сила!

  • @kakoytochel2286
    @kakoytochel2286 2 роки тому +1

    смотрел 3 месяца назад ничего не понял , посмотрел сейчас и все понял . Magic

  • @zayarniy
    @zayarniy 4 роки тому +3

    Молодцы! Отличный пример. Нет лишней воды. Очень все живо и понятно.

  • @user-og2gw8tf6u
    @user-og2gw8tf6u 4 роки тому +4

    хороший урок, только просьба в следующий раз показывай изменения в файлах, а так очень интересно смотреть

  • @user-pi6gt2we7k
    @user-pi6gt2we7k 4 роки тому +1

    спасибо за видео только просьба показывать все экран монитора, что бы было видно что и где открыто

  • @user-ffffffff
    @user-ffffffff 5 років тому +10

    Это единственное нормальное видео по mvvm. Спасибо друг, снимай дальше.

    • @BashkaMen
      @BashkaMen  5 років тому +1

      спасибо :)

    • @JoeSmith-ll9yn
      @JoeSmith-ll9yn 3 роки тому +2

      @@BashkaMen
      11:29
      о содержимом свойства "Clicks" которое занимает 11 строк мы, как я понимаю, должны догадаться сами
      дизлайк

    • @JoeSmith-ll9yn
      @JoeSmith-ll9yn 3 роки тому +4

      @@BashkaMen откуда взялся класс BaseVM - тоже непонятно

    • @dianacold1978
      @dianacold1978 2 роки тому

      @@JoeSmith-ll9yn 5:00 функция Click

    • @mavezo6718
      @mavezo6718 Рік тому

      @@BashkaMen это действительно хорошее видео. Много смотрел примеров, объяснений, но только твой ролик понял

  • @SoferPeOZN
    @SoferPeOZN 3 роки тому +1

    Big like

  • @jokentosh
    @jokentosh 5 років тому +26

    Ты конечно объясняешь нормально. Но не придаешь значение объяснить от куда и куда идут фалы... создал класс а где создал как подключил сиди гадай....
    Хотя бы солюшен эксплорер бы не прятал.
    И model так и не задействовал(и целой картины работы mvvm не складывается) общая суть улавливается и то из за какого то багажа знаний. А в целом реализацию шаблона так и не обьяснил.

    • @eu-rn1xb
      @eu-rn1xb 5 років тому +3

      Вот именно. Без модели этот видос не стоит ничего

  • @Magic-oc1jk
    @Magic-oc1jk 4 роки тому +4

    Нихуя не понятно, но очень интересно!!!

  • @AlexCSharp
    @AlexCSharp 5 років тому +38

    Братишка, никогда больше не обрезай так окна, ничерта же не понятно что где находится. У нас у всех мониторы, на которых мы видим VS так же, как ты. Не надо этого, пожалуйста.

    • @TheRealNisem
      @TheRealNisem 3 роки тому

      ну по идее он же объяснил изначально где что находится, когда было введение рассказывающее что такое MVVM - логика в Models, в ViewModels лежит класс или набор классов отвечающих за передачу данных из модели в интерфейс и наоборот, в Views - лежит интерфейс. просто он обрезал чтобы код был более читаем. Да знаю что я отвечаю на коммент двухлетней давности.

    • @AlexCSharp
      @AlexCSharp 3 роки тому

      @@TheRealNisem Да, я этот коммент писал тогда, когда делал тестовое задание для принятия на стажировку. Сейчас я уже мидл и сам пишу архитектурные обучалки. Не очень актуально.)

    • @user-lm8py5rb4m
      @user-lm8py5rb4m 3 роки тому

      @@AlexCSharp как собеседование прошло ?

    • @AlexCSharp
      @AlexCSharp 3 роки тому +2

      @@user-lm8py5rb4m Да как, то да сё, тестовое дали, на мотивацию посмотрели, кое как сделал, предложили оплачиваемую стажировку, да и всё.)

    • @user-lm8py5rb4m
      @user-lm8py5rb4m 3 роки тому

      @@AlexCSharp ,хмм ,понял ,спасибо ,я думал на стажировке ещё вопросы спрашивают 😅, сижу старое повторяю ,новое учу

  • @scrypto
    @scrypto 4 роки тому +1

    11:15 раньше класс наследовался от INotifyPropertyChanged, а теперь от BaseVM, причем оставив INotifyPropertyChanged, все работает

    • @TheRealNisem
      @TheRealNisem 3 роки тому +2

      BaseVM у автора - класс содержащий реализацию INotifyPropertyChanged. Он от него наследуется. просто до этого он наследовался напрямую от INotifyPropertyChanged и реализацию выполнял внутри класса MainViewModel. вы не заметили что реализация исчезла из класса MainViewModel и оставили ее там по этому у вас все работает если оставить наследование от INotifyPropertyChanged.

  • @user-gw9vs4jx4k
    @user-gw9vs4jx4k Рік тому +1

    Я так и не увидел связь model и viewmodel. Где же она?

  • @user-tx7fd3ny3k
    @user-tx7fd3ny3k 4 роки тому +2

    Я везде вижу примеры MVVM с использованием простых данных типа вывода числа или созданием простой модели в конструкторе, а вот с использованием вытянутых данных из БД, нигде не могу найти нормальные примеры. Если мы например вытягиваем данные с помощью DataSet в Table, нужно ли делать отдельную модель которая будет описывать содержимое Table и потом на основе данных из Table создавать коллекцию моделей которая поддерживает привязки? Или мы просто будем использовать Table или его DefaulView во ViewModel?

    • @raymond1489
      @raymond1489 4 роки тому

      Да, нужно будет описать модель таблицы, потом с БД заполнять эту модель и далее работать с коллекцией, которую ты заполнил и забнидил. Подробнее: metanit.com/sharp/wpf/22.1.php

    • @raymond1489
      @raymond1489 4 роки тому

      И лучше бы научиться работать с EntityFramework, он ускорит процесс работы в разы + представит твои таблицы автоматически в виде моделей, останется только с помощью linq + sql с ними работать.

  • @gryznysima6872
    @gryznysima6872 2 роки тому +3

    НАРОД!!! этот урок надо пересмотреть пару раз и тогда все будет понятно!!!!!

  • @evan_kirk
    @evan_kirk 8 місяців тому

    От интерфейсов *не наследуются* , их *реализуют*

  • @TanaTiX44
    @TanaTiX44 4 роки тому +1

    Я так понимаю, что количество кликов нужно все же поместить в модель? И как потом правильно соединить модель и вьюмодель?

    • @argentmize
      @argentmize 3 роки тому

      В модели, кроме свойств, вообще ничего не должно быть, по-хорошему. Логикой должна заниматься модель представления (view model).

  • @user-ri1kq2fq5g
    @user-ri1kq2fq5g 2 роки тому

    Я знаю что 4 года ) но если можешь то ответь . У меня вопрос , а как в viewmodel реализовать все event , ну припустим я хочу pointermove

  • @Bont1860
    @Bont1860 Рік тому +1

    На гитХабе нет кода этого проекта с MVVM... (((

  • @andreikhotko5206
    @andreikhotko5206 5 років тому +1

    6:55 свойство необязательно должно иметь и get и set. Достаточно одного из них, чтобы поле стало свойством.

    • @dimapanasenko5111
      @dimapanasenko5111 4 роки тому +1

      Свойство обязательно имеер геттер и сеттер.
      Просто в озвученном Вами варианте второй не виден (не прописан)

    • @exys2086
      @exys2086 3 роки тому

      @@dimapanasenko5111, есть поля без свойств. Если не знаешь - не пиши.

    • @user-wc5go8zg5o
      @user-wc5go8zg5o 2 роки тому +2

      @@exys2086 не надо называть свойства полями, пожалуйста. В видео, кстати, тоже ошибка.
      Поле - это переменная. Свойство - это метод.

  • @SuperWolchara
    @SuperWolchara 3 роки тому +1

    Ну вот смотришь и что нового? это то что в xml биндишься на свойство, а по факту тоже самое можно сделать delegate + event + invoke. В чем приемущество? Даже тот же инвок вызывается для того чтоб из другого потока обратиться. DataContext я бы трактовал как delegate + event а подписка это path=value
    На WidowsForms это можно сделать так:
    class Class1{
    delegate void Show(int value);
    public event EventShow;
    int Counter = 0;
    public Class1()
    {
    new Task(()=>
    {
    EventShow?.Invoke(Counter ++);
    }).Start();
    }
    }
    class Form1{
    public Form1(){
    Class1 class1 = new Class1()
    class1.EventShow += EventShow;
    }
    private void EventShow(int value)
    {
    textBox1.Text = value;
    }
    }

    • @BashkaMen
      @BashkaMen  3 роки тому

      Очень читаемо, класс!
      А я буду использовать то что нормально читается :)
      Я вроде в видео не говорил что самому биндинг сделать нельзя

    • @SuperWolchara
      @SuperWolchara 3 роки тому

      @@BashkaMen Я к тому что это не облегчает написание кода, по структуре тоже самое только привязка либо в коде либо в xml. Чем так хвалят этот Binding... Если между контролами то да не нужно даже залазить в код все в xml.

    • @BashkaMen
      @BashkaMen  3 роки тому

      @@SuperWolchara хвалят тем что с тебя снимается челый кусок работы - работа с стейтои UI (выключить кнопку, включить) обновить значение текстбокса и тд

    • @argentmize
      @argentmize 3 роки тому +1

      Суть в том, что при таком подходе к разработке у тебя есть разделение на КОД и ДИЗАЙН. Т.е., если ты программист, что часть работы ты с себя можешь скинуть на дизайнера, который по ТЗ накидает интерфейс, настроит взаимодействие и предоставит тебе в итоге готовый интерфейс (я так понял, для этого нужна программа Blend), к которому можно будет прикрутить логику в виде кода непосредственно. Конечно, когда проектик небольшой и/или ты сам себе заказчик, про это вообще не думаешь. Но здесь всё упирается в удобство и скорость. И конечно, никто не запрещает пользоваться дедовскими методами. Однако, если проект большой, где ты уже не один, важно придерживаться какой-то общей концепции, которая всем упростит задачу. Вот и придумывают всякие паттерны проектирования, библиотеки, фреймворки и т.д.
      В общем, из нового здесь только подход к разработке. А в 2021 и далее будут очередные изменения. WinUI 3, MAUI, Uno Platform, Project Reunion.

  • @user-qq2kd7ey7j
    @user-qq2kd7ey7j 2 роки тому

    Спасибо, очень помог. У меня вопрос: если View не должна знать о ViewModel, и ViewModel не должна знать о View, как тогда во View вывести список объектов (1: название, цена; 2: название, цена; ...)? Ведь эти поля придется создавать динамически, но View не знает о данных, а ViewModel не знает о View и переслать ему пару объектов не может.

    • @BashkaMen
      @BashkaMen  2 роки тому

      View знает о ViewModel и биндингами на нее привязывается

  • @ssss70
    @ssss70 5 років тому +5

    Ну.. какбы.. типа...

  • @scrypto
    @scrypto 4 роки тому

    12:25, ты пишешь, что clicks меньше десяти в условии, однако программа разрешает делать 10 клик, почему?

    • @scrypto
      @scrypto 4 роки тому

      А

    • @zayarniy
      @zayarniy 4 роки тому

      Начало с 0

    • @scrypto
      @scrypto 4 роки тому +1

      @@zayarniy вот я тупой ) Видимо устал к тому времени, как смотрел видос этот ) Этож начало начал, все с 0 идет, и знаю же это )

  • @user-mn2po8ns2z
    @user-mn2po8ns2z 3 роки тому +1

    клик ад, а видео полезное

  • @itcloudguy
    @itcloudguy 5 років тому +1

    за 13 минут рассказать о MVVM ?! Ну ты вообще молодец какой...

    • @BashkaMen
      @BashkaMen  5 років тому +5

      Кому то нужно пол года на изучение ПАТТЕРНА?

  • @minsoctrud8174
    @minsoctrud8174 5 років тому

    Брат) подскажи пожалуйста, как ты такую подсветку кода сделал. Очень удобная!!!

    • @BashkaMen
      @BashkaMen  5 років тому

      MinSoc Trud studiostyl.es/schemes/desertex-revised

    • @minsoctrud8174
      @minsoctrud8174 5 років тому

      @@BashkaMen сердечно благодарен!) Видео позволили за два дня войти в курс дела с WPF!

    • @sirop4ik
      @sirop4ik 4 роки тому +1

      Но я так понял, что это не работает для VS2017 ... или только у меня?

  • @user-ti6bq7dd3d
    @user-ti6bq7dd3d 2 роки тому

    жаль что чтобы понять видео нужно пересмотреть его много раз

  • @yevheniytymchishin8401
    @yevheniytymchishin8401 2 роки тому

    рефРакторинг?

  • @uporka6924
    @uporka6924 4 роки тому +3

    Чет если по видосу судить- муть полная. Что бы сделать тоже самое что в формах, надо пукнуть крякнуть, написать кучу непонятного кода. Хрень какая то

    • @TheRealNisem
      @TheRealNisem 3 роки тому +2

      Это во первых не то же самое что в формах( если подразумевать под формами программирование как попало без структуризации проекта). Это паттерн который позволяет подразделить проект на некоторое количество частей. В данном случае 3. В этом проще разобраться чем в такой же по функционалу программе но написанной тяп ляп, а еще такая реализация позволяет вообще отбросить нафиг интерфейс. можно убрать XAML и написать интерфейс на HTML и будет все прекрасно работать без изменения логики. ( коммент скорее не для автора а для будующих поколений, так как автор я думаю за 10 месяцев разобрался с тем для чего нужен MVVM и другие паттерны а так же WPF)

  • @mellbonus1337
    @mellbonus1337 6 років тому +2

    а где hacking

  • @Qwerty0.1
    @Qwerty0.1 2 місяці тому

    кошмар

  • @Dinarqka
    @Dinarqka 2 роки тому

    Непонятно, откуда взялся интерфейс BaseVM, отсюда ничего непонятно. В целом видос полезный, но это скорее 13 минут для того, чтобы записать себе вопросы, которые потом нужно нагуглить.

  • @boroda7694
    @boroda7694 5 років тому +1

    ничего не понятно(

  • @babymayby9270
    @babymayby9270 5 років тому

    не не понимаю я этот mvvm зачем все так усложнять

    • @raymond1489
      @raymond1489 4 роки тому

      Сложность возникнет когда твой интерфейс приложения смешается бизнес-логикой (функциями, которые например берут данные с БД). MVVM даёт возможность отделить логическую часть от интерфейса, если тебе нужно будет дописать какой то функционал ты залезешь ModelView и там допишешь команды.

  • @KaizerTheChangeling
    @KaizerTheChangeling 2 роки тому

    все как то скомкано с кучей запинок, будто сам не уверен в том, что ты делаешь, лично я понял только принцип модели, и то потому что загуглил до этого

  • @MonichGPT
    @MonichGPT 5 років тому

    Че ты делаешь где тут дата ничего не понятно какие-то () => что это вообще такое

    • @user-pt6bk3bo4p
      @user-pt6bk3bo4p 4 роки тому +4

      Monich лямбда выражения. Ты сам виноват в том, что тупой

    • @user-pt6bk3bo4p
      @user-pt6bk3bo4p 4 роки тому

      Monich че

    • @mavezo6718
      @mavezo6718 Рік тому

      Что ты на впф забыл, если не знаешь о () => смешной

  • @user-uc1qz8oq9h
    @user-uc1qz8oq9h 5 років тому +5

    не рефракторинг, а реФАКТОРинг. видео ни о чем, как учебное не катит совсем

    • @kavelquu
      @kavelquu 2 роки тому

      ааа, господи, я сидел не мог понять что это за слово, а это рефакторинг ахахах

  • @user-tv4kh4pc7s
    @user-tv4kh4pc7s 2 роки тому +1

    Обьясняет как будто все понимают язык школоты

    • @BashkaMen
      @BashkaMen  2 роки тому

      что?

    • @user-tv4kh4pc7s
      @user-tv4kh4pc7s 2 роки тому

      @@BashkaMen моя не понимать кринж этого попита

  • @JoeSmith-ll9yn
    @JoeSmith-ll9yn 3 роки тому +1

    11:29
    о содержимом свойства "Clicks" которое занимает 11 строк мы, как я понимаю, должны догадаться сами
    дизлайк

    • @remingtontuflips2797
      @remingtontuflips2797 3 роки тому

      в самом начале видео было показано, что там

  • @sergejstreck7026
    @sergejstreck7026 5 років тому +17

    тупой блогер, половина кода вообще остаётся за кадром, кому нахрен нужны такие объяснения, когда не понятна структура проекта! Мальчик, не занимайся не своим делом!

    • @anonym1548
      @anonym1548 4 роки тому +7

      Господи, откуда вы такие беретесь?
      Юноша, усвойте одно - никто вам здесь ничем не обязан. Нравится смотрите. Не нравится, идете мимо.
      А то сидите только на диване и обсираете.
      Всегда нужно оставаться людьми. Если не нравится реализация в видео каких-то моментов, то можно просто по-человечески об этом написать и автор примет это к сведению при создании будущих видео.

  • @andrewsed_uplisten2019
    @andrewsed_uplisten2019 4 роки тому +4

    короче хрень, учитель из тебя херовый я так и не понял порядок написания что куда от куда пишется оч разочарован, думал всё по порядку расскажешь , не , только диз

    • @TheRealNisem
      @TheRealNisem 3 роки тому

      Думать надо учится. думать. ролик полезный. конечно объяснено все достаточно сухо но понять можно. Я сам пересмотрел несколько раз но вник в тему и даже смог ответить людям на вопросы в комментариях.

  • @user-tu5kz9pv1o
    @user-tu5kz9pv1o Рік тому

    Смотрел это видео 2 года назад. Непонятно о чем хочет донести челик. Ужасные примеры и повествование.
    Пересматриваю сейчас - абсолютно то же самое чуство.
    Цель была не научить - а выпендриться, хз как это назвать.
    В MVVM может въехать даже человек не дошедший до событий и делегатов, есть живые примеры.

    • @BashkaMen
      @BashkaMen  Рік тому

      У нас в чате другое мнение