WPF & AvaloniaUI (C#) - #00 - Создание проекта. Основы MVVM

Поделиться
HTML-код
  • Опубликовано: 10 ноя 2024
  • Если хочешь получить знания по технологиям программирования подписывайся на канал.
    Первый урок курса по созданию проводника на технологиях WPF и AvaloniaUI. В этом курсе я хочу показать создание полноценного файлового менеджера.
    Репозиторий:
    github.com/ego...
    Привет! Меня зовут Егор, и я специалист в области разработки десктопных приложений.
    Сейчас я работаю над курсом по созданию проводника с нуля до возможного коммерческого использования. В данном курсе мы рассмотрим все аспекты создания десктопных приложений на технологиях WPF и AvaloniaUI.
    Этот курс является моей первой работой на ютубе. С каждым роликом я пытаюсь улучшить качество звука и курса в целом. Получив навыки создания контента, в недалеком будущем уже буду выкладывать ролики вне данного курса.

Комментарии • 44

  • @АлександрЗайцев-б4э
    @АлександрЗайцев-б4э 2 года назад +2

    Спасибо очень крутые уроки! Подход сравнения wpf и Avalonia очень зашел)

  • @glebkolesnichenko2793
    @glebkolesnichenko2793 2 года назад +2

    Приветствую !
    Хотел вас спросить ибо из-за одной ошибки у меня дальше работать ничего не будет .
    Смотрите в чем дело , когда я назначил Explorer.Avalonia.UI в качестве запускаемого проекта , то при попытке запустить выдает ошибку "Исполняемый файл для отладки "Explorer.Avalonia.UI.exe" указанный в профиле отладки не существует".
    Почему-то на .NET Core не создается .exe в Debug .
    Подскажите как это пофиксить ?

  • @smych79
    @smych79 3 года назад +4

    При добавлении ссылки на библиотеку Net Core выдавала ошибку мол используете не правильный тип. Короче мучался пару часов. Плюнул сделал в Xaml ссылку на сборку:
    xmlns:VM="clr-namespace:Explore.Share.ViewModels;assembly=Explore.Share.ViewModels"
    и через блок

    В итоге все заработала

  • @positivemoody
    @positivemoody 3 года назад

    Круто думаю начать учить wpf

  • @havokRazor718
    @havokRazor718 4 года назад +1

    Странно, никогда не видел в студии такого свойства у папок и уж тем более его не указывал. Работаю уже три года, с VS2017. Может у Вас какая-то настройка в студии включена/отключена? Надо поискать.

    • @EgorozhCoding
      @EgorozhCoding  4 года назад

      Это всё фишка Resharpera)) А в настройках этого расширения я так и не нашёл как сделать так чтобы по default'у было false у создаваемой папки))

    • @havokRazor718
      @havokRazor718 4 года назад +1

      @@EgorozhCoding у меня тоже решарпер и нет такой дичи( странная тема. Попробуй обновиться если не последняя версия, они там кстати в последнем апдейте добавили поддержку для Авалонии, но в замле все равно решарпер не работает)) вообще спасибо за видосы, я как раз сел Авалонию осваивать и тут такой подгон)

    • @EgorozhCoding
      @EgorozhCoding  4 года назад +1

      @@havokRazor718 Ну да ладно) У меня просто везде такая тема - и на работе и дома) Да не за что)) Скоро еще собираюсь начать курс по Blazor'у))

  • @RedkeiGost
    @RedkeiGost 3 года назад

    Я не могу понять, эта самая Avalonia компилит приложения под разные платформы, но устанавливается только на винду? И обязательно ли использовать Visual Studio или адекватная экосистема, плагины и расширения есть и для VS Code? Просто неудобно юзать технологию, которая жестко привязана к конкретной ide и даже оси. Ну, если вы на другой ide и оси как минимум.
    Андроид-приложения можно лепить в Андроид Студио просто по фану, в визуальном редакторе. Пользоваться им не рекомендуется, но для новичка осваиваться очень удобно, плюс есть примеры готовых приложений, которые предлагается использовать при создании нового приложения. Вот хотелось бы найти что-нибудь подобное для десктопа, чтобы джаст фо фан поиграться иногда. Лозарус и WindowBuilder джавы тоже были довольно удобны, можно быстро набрасать апликуху. А в современных технологиях для десктопа похоже, что нужно лезть на винду и ваять что-то на wpf. Наверно, я в десктопной разработке не разбираюсь.
    Не юзать же богомерзкий электрон.

    • @EgorozhCoding
      @EgorozhCoding  3 года назад

      Под другой осью можно собрать приложения вообще без ide)) В консольке из под директории с сорцами авалонии, где лежит .csproj, вбиваете dotnet build и приложение готово) То есть всё что нужно это .net core sdk и блокнот/vs code и тп.)) Но для наилучшей результативности лучше юзать Rider, если вы на линуксе или macos разрабатываете) Там есть встроенная поддержка аваолонии, с графическим дизайнером и всякими рефакторингами для axaml файлов

    • @RedkeiGost
      @RedkeiGost 3 года назад +1

      @@EgorozhCoding райдер есть, спасибо. Ну а имеется прям совсем оупенсорсно-бесплатный вариант навроде vs code или что там сейчас еще, саблайм текст? Чтобы по фану как по фану?
      Без ide мне и фреймворки не нужны. Ассамблер в зубы и вперед.

    • @EgorozhCoding
      @EgorozhCoding  3 года назад

      @@RedkeiGost на ум ничего не приходит, чтобы было комфортно для полноценной разработки, бесплатно и не на винде. Я VS code юзал один раз на линуксе, чтобы подправить чутка код и тут же сбилдить приложение из терминала) Но разметку делать там мне кажется не вариант)

    • @RedkeiGost
      @RedkeiGost 3 года назад

      @@EgorozhCoding и как следствие, людям проще запилить десктоп на Электроне, чем на какой-то более адекватной технологии. Изврат же.

    • @EgorozhCoding
      @EgorozhCoding  3 года назад +1

      @@RedkeiGost Ну не знаю) Не пробовал электрон. Я бы всё равно выбрал авалонию, даже если бы не было возможности писать в райдере) Тем более что графическим дизайнером и так не пользуюсь)

  • @kamaev3385
    @kamaev3385 4 года назад +2

    А как сделать чтобы AvaloniaUI появилась в шаблонах проектов ?

    • @AnkeKatome
      @AnkeKatome 2 года назад

      Достаточно поставить аддон для студии для авалонии. Он должен подтянуть темплейты. А если прямо руками нужно для dotnet cli то вот их статейка на гитхабе.

  • @anonym1548
    @anonym1548 4 года назад +5

    Приветствую!
    Спасибо! Очень классные уроки. Лайк, подписка.
    Скажите, (основываясь на своем опыте), если я начну большой проект (уровня интерпрайз) на Авалонии, то может ли произойти такое, что в ходе использования Авалонии я зайду в тупик и будет никак не решить тот или иной момент? Или Авалония на сегодняшний день стабильна и самодостаточна?
    Если не брать в расчет мультиплатформерность , то можно ли сказать, что на Авалонии можно создать то же самое, что и на чистом WPF? Или же есть какие-то ограничения.
    Да, я знаю что у Авалонии есть доки и прочее, но это не то... Интересует именно опыт специалиста, который уже пощупал эту технологию самостоятельно.
    Буду очень благодарен за обратную связь.
    P.S.
    Уроки понравились тем, что в них показана не какая-то абстрактная херня, как это делают в 99.99% обучающих видео.
    У вас именно полноценные и практичные уроки. Это очень здорово, не сходите с этой парадигмы.

    • @EgorozhCoding
      @EgorozhCoding  4 года назад +1

      Спасибо)
      На самом деле в авалонии много чего нету, к чему привыкаешь в WPF) Особенно это касается графики. Там нет различных градиентных кистей помимо линейного. Нет Drawing Brush'a - только VisualBrush, от которого вроде как хотят отказаться в авалонии, но только после реализации DrawingBrush. Матрицы трансформаций реализованы постольку-поскольку. Например RotateTransform там принимает сейчас только угол а точку отсчёта нет. Но это всё решаемо)
      То есть реализовать идею всё равно можно, например с градиентами можно решить вопрос с помощью IBitmap. Но в wpf вроде как все проще) Еще в авалонии нет 3D компонентов. Можно как-то OpenGl прикрутить, но нативной поддержки как в WPF нету) Контролы тоже не совсем повторяют богатый функционал WPF) Недавно столкнулся с тем, что в ComboBox в авалонии нет свойства Text, чтобы можно было вбить значение как в TextBox.
      Тут все зависит от приложения) Если это не редактор графический какой-нибудь то авалония думаю покроет все запросы уже сейчас) Хотя и редактор можно на ней сделать, если хочется запускать приложение не только на винде, но это будет гораздо сложнее в реализации, чем на WPF)

    • @anonym1548
      @anonym1548 4 года назад +1

      ​@@EgorozhCoding ясно, спасибо.
      Раз много чего нет, значит пожалуй откажусь от авалонии.
      На горизонте есть не менее интересная технология - .NET MAUI
      Вот здесь можно ознакомиться подробнее, если интересно - devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/
      И тут последняя выжимка про данную технологию:
      azure.microsoft.com/ru-ru/updates/net-multiplatform-app-ui-net-maui-announced/

    • @EgorozhCoding
      @EgorozhCoding  4 года назад +3

      @@anonym1548 Проблема .NET MAUI в том, что это UI фреймворк представляющий собой по сути обёртки над нативными контролами операционной системы. В то время как WPF и AvaloniaUI отрисовывают UI от и до. Поэтому в MAUI будет сложно сделать полностью кастомный контрол не похожий на нативный. Мне кажется эта штука не взлетит, но это моё мнение. Подождем-посмотрим))

  • @andreypplk
    @andreypplk Год назад +1

    Пора обновлять урок под 11 Авалонию структуру похоже сильно переделали, я сейчас пытаюсь раздуплится.

  • @GoLezhaShowMega
    @GoLezhaShowMega 2 года назад

    а как добавить Авалонию в визуал студию ? а то что то много разных варинов в интернете, уже начал сомневатся стоит ли с ней связыватся

    • @Ar6yZuK
      @Ar6yZuK 3 месяца назад

      Стоит. На официальном сайте авалонии скачать расширение для визуалки

  • @dusefi
    @dusefi 3 года назад

    А почему необходимо создавать отдельно AvaloniaUI и Wpf если авалония работает под виндой? Вроде бы все затевалось как раз, чтобы написать один раз и работало везде, а не делать отдельную реализацию под каждую систему.

    • @EgorozhCoding
      @EgorozhCoding  3 года назад +2

      В основном для сравнения. Плюс WPF пока что сам по себе круче авалонии, если брать только винду. Плюс так проще изучать авалонию было, пытаясь перенести компоненты из WPF. В целом решение создавать и на WPF принесло свои бенефиты, в том плане, что на WPF есть куча сторонних библиотек, которые были внедрены в проводник. На авалонии бы внедрение подобного функционала заняло бы овердохрена времени.

  • @randommontage3922
    @randommontage3922 Год назад

    "Разрабатывать на Net framework в 2020 это не разумно".
    А потом пытаясь замутить графики без сторонних библиотек и компонентов ты понимаешь, что выстрелил себе в колено ибо chart после фреймворка не фурычит. И с этого момента начинаются поиски замены. А из хоть немного адекватного на русском языке находится лишь статья 2013 года на хабре.
    История из жизни при разработке на WinForms xD

  • @fobien
    @fobien 3 года назад +2

    Слушай, а можешь сделать экскурс по Rider
    по горячим клавишам
    ну и по тому что популярно в vs
    как сделать то же самое в rider

    • @EgorozhCoding
      @EgorozhCoding  3 года назад

      Да я как-то не пользуюсь им. Не хочется лезть туда, где не разбираюсь)

  • @Hello_world_2020A
    @Hello_world_2020A 4 года назад

    Я новичок.
    Я думаю если изучу c# + wpf
    Я буду делать сложные программы для видовс.
    Тут совсем не для меня.
    Мне нужно сделать аналог circle dock.
    Что я изучаю не так

    • @EgorozhCoding
      @EgorozhCoding  4 года назад +1

      Привет! Нужен опыт. Мой курс не совсем для новичков - он задумывался уже для людей, которые имеют опыт построения интерфейсов.
      От себя могу посоветовать найти различные видеокурсы по созданию программы от начала до конца и тупо повторять. Практически всегда будет что-то работать не так как в видео и тут уже нужно разбираться, гуглить. И вот так вот по-тихонечку придет понимание. Что не советую, так это изучать язык и технологии в отрыве от создания готовой программы. Например, сегодня изучаем делегаты, завтра события и т.д. Это все нужно смотреть между делом. Основное - это написание программы.
      И начинайте писать аналог circle dock уже сейчас. Сначала в отрыве от интерфейса, просто кнопочки. Потом научитесь их как-то группировать. И по тихоньку сделаете все как надо)

    • @Hello_world_2020A
      @Hello_world_2020A 4 года назад

      @@EgorozhCoding все ты правильно говоришь.
      Я к примеру не знаю как добавить ярлык на программу из видовс и как где мне искать (пробовал искать в инете но найти не могу )
      Я просто не понимаю как реализовать простой функционал
      Вот все говорят изучай
      c# изучаю
      И везде только говорят как работать с консолью! !
      Но как применит знания c# на wpf
      Откуда брать команды ведь
      К примеру Windows Form с wpf несовместимы и код в них почти разный.
      К примеру выучил я c# но как применить эти знания на wpf
      Я не понимаю откуда брать команды для wpf
      Знаю для тебя это глупый вопрос.
      Я не понимаю к примеру откуда брать команды для обработчиков событий типа такой thisClose ()
      Идей то очень много но я просто не понимаю как реализовать функционал даже не знаю где искать! ! Пытался найти в google
      Смотрю чужой код и не понимаю

    • @Hello_world_2020A
      @Hello_world_2020A 4 года назад

      @@EgorozhCoding вопрос 2
      Посоветуйте мне курсы по созданию программ
      Желательна на c# + wpf
      Программа circle dock была заброшен в 2008 году и была написана на Windows form
      Фреймворк вроде 3
      Я же пытаюсь использовать wfp + blend (для анимации)
      У этой программы круглый интерфейс
      И так как я думаю реализовать???. ..
      При нажатии на среднию кнопку мыши ///появится круговое меню с ярлыками на разные программы (программы будут стоять как на цифрах в часах это и есть ярлыки на программы из виндовс типа фотошоп, иллюстратор и др//если кликнуть второй раз на среднию кнопку мыши то круговое меню скроется и все. ...
      Мне хоть такой функционал реализовать нужно
      На их официальном сайте есть версия 0.9 alfa с открытым исходным кодом
      Посмотри если интересно
      Версии выше типа 1.5 занималась другая команда и там вроде код закрытый и была тоже заброшена в 2012 году это версия 1.5
      У меня нет цели стал крутым программист.
      Я просто хочу стать программистом что бы для людей создать аналог circle dock
      В интернете вообще нет аналогов или конкурентов
      Если хочешь сделай урок по созданию circle dock на чистом c# с wpf + blend

    • @EgorozhCoding
      @EgorozhCoding  4 года назад +2

      @@Hello_world_2020A посмотрел исходники. Предлагаю вам для начала весь тот код на Visual Basic переписать 1 в 1 на с# для начала с использованием всё того же Windows Forms. Залить это всё на гитхаб. А я потом сделаю стрим или отдельный ролик по переносу функционала из форм в wpf на основе вашего репозитория.
      Кстати говоря формы и wpf совместимы. Причем в wpf можно встраивать компоненты форм. Я так делал, когда переносил ColorPicker из форм в WPF. Для начала все встроил как есть, а потом потихоньку переписывал компоненты на wpf.

    • @Hello_world_2020A
      @Hello_world_2020A 4 года назад

      @@EgorozhCoding 1) То есть circle dock был написан на Visual Basic ?????
      2) К сожалению я сейчас только новичок и не знаю как переписать из Visual Basic на C# ИЗВИНИТЕ
      3) Прочтите мои ответы выше **// я там хотел узнать КАКИЕ курсы вы бы посоветовали
      прочтите мои ответы (раньше)
      Я декомпилировал circle dock он вроде написан на C# а вы говорите Visual Basic
      вот скрин
      drive.google.com/file/d/1OQtjCZLchAerphKjwNz0UKcIzLrqhK5r/view?usp=sharing

  • @OpalGooDog
    @OpalGooDog 3 года назад +2

    Windows forms куда проще :(

    • @igrovoi_kom
      @igrovoi_kom 3 месяца назад +1

      И уродливее по UI

  • @michalivanich3323
    @michalivanich3323 3 года назад +1

    Вообще нихера не понятно

    • @EgorozhCoding
      @EgorozhCoding  3 года назад +1

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

    • @АлексДжаванов
      @АлексДжаванов 2 года назад

      @@EgorozhCoding а как долго вы в теме програмирования‽