WPF & AvaloniaUI (C#) - #00 - Создание проекта. Основы MVVM
HTML-код
- Опубликовано: 10 ноя 2024
- Если хочешь получить знания по технологиям программирования подписывайся на канал.
Первый урок курса по созданию проводника на технологиях WPF и AvaloniaUI. В этом курсе я хочу показать создание полноценного файлового менеджера.
Репозиторий:
github.com/ego...
Привет! Меня зовут Егор, и я специалист в области разработки десктопных приложений.
Сейчас я работаю над курсом по созданию проводника с нуля до возможного коммерческого использования. В данном курсе мы рассмотрим все аспекты создания десктопных приложений на технологиях WPF и AvaloniaUI.
Этот курс является моей первой работой на ютубе. С каждым роликом я пытаюсь улучшить качество звука и курса в целом. Получив навыки создания контента, в недалеком будущем уже буду выкладывать ролики вне данного курса.
Спасибо очень крутые уроки! Подход сравнения wpf и Avalonia очень зашел)
Приветствую !
Хотел вас спросить ибо из-за одной ошибки у меня дальше работать ничего не будет .
Смотрите в чем дело , когда я назначил Explorer.Avalonia.UI в качестве запускаемого проекта , то при попытке запустить выдает ошибку "Исполняемый файл для отладки "Explorer.Avalonia.UI.exe" указанный в профиле отладки не существует".
Почему-то на .NET Core не создается .exe в Debug .
Подскажите как это пофиксить ?
При добавлении ссылки на библиотеку Net Core выдавала ошибку мол используете не правильный тип. Короче мучался пару часов. Плюнул сделал в Xaml ссылку на сборку:
xmlns:VM="clr-namespace:Explore.Share.ViewModels;assembly=Explore.Share.ViewModels"
и через блок
В итоге все заработала
Круто думаю начать учить wpf
Странно, никогда не видел в студии такого свойства у папок и уж тем более его не указывал. Работаю уже три года, с VS2017. Может у Вас какая-то настройка в студии включена/отключена? Надо поискать.
Это всё фишка Resharpera)) А в настройках этого расширения я так и не нашёл как сделать так чтобы по default'у было false у создаваемой папки))
@@EgorozhCoding у меня тоже решарпер и нет такой дичи( странная тема. Попробуй обновиться если не последняя версия, они там кстати в последнем апдейте добавили поддержку для Авалонии, но в замле все равно решарпер не работает)) вообще спасибо за видосы, я как раз сел Авалонию осваивать и тут такой подгон)
@@havokRazor718 Ну да ладно) У меня просто везде такая тема - и на работе и дома) Да не за что)) Скоро еще собираюсь начать курс по Blazor'у))
Я не могу понять, эта самая Avalonia компилит приложения под разные платформы, но устанавливается только на винду? И обязательно ли использовать Visual Studio или адекватная экосистема, плагины и расширения есть и для VS Code? Просто неудобно юзать технологию, которая жестко привязана к конкретной ide и даже оси. Ну, если вы на другой ide и оси как минимум.
Андроид-приложения можно лепить в Андроид Студио просто по фану, в визуальном редакторе. Пользоваться им не рекомендуется, но для новичка осваиваться очень удобно, плюс есть примеры готовых приложений, которые предлагается использовать при создании нового приложения. Вот хотелось бы найти что-нибудь подобное для десктопа, чтобы джаст фо фан поиграться иногда. Лозарус и WindowBuilder джавы тоже были довольно удобны, можно быстро набрасать апликуху. А в современных технологиях для десктопа похоже, что нужно лезть на винду и ваять что-то на wpf. Наверно, я в десктопной разработке не разбираюсь.
Не юзать же богомерзкий электрон.
Под другой осью можно собрать приложения вообще без ide)) В консольке из под директории с сорцами авалонии, где лежит .csproj, вбиваете dotnet build и приложение готово) То есть всё что нужно это .net core sdk и блокнот/vs code и тп.)) Но для наилучшей результативности лучше юзать Rider, если вы на линуксе или macos разрабатываете) Там есть встроенная поддержка аваолонии, с графическим дизайнером и всякими рефакторингами для axaml файлов
@@EgorozhCoding райдер есть, спасибо. Ну а имеется прям совсем оупенсорсно-бесплатный вариант навроде vs code или что там сейчас еще, саблайм текст? Чтобы по фану как по фану?
Без ide мне и фреймворки не нужны. Ассамблер в зубы и вперед.
@@RedkeiGost на ум ничего не приходит, чтобы было комфортно для полноценной разработки, бесплатно и не на винде. Я VS code юзал один раз на линуксе, чтобы подправить чутка код и тут же сбилдить приложение из терминала) Но разметку делать там мне кажется не вариант)
@@EgorozhCoding и как следствие, людям проще запилить десктоп на Электроне, чем на какой-то более адекватной технологии. Изврат же.
@@RedkeiGost Ну не знаю) Не пробовал электрон. Я бы всё равно выбрал авалонию, даже если бы не было возможности писать в райдере) Тем более что графическим дизайнером и так не пользуюсь)
А как сделать чтобы AvaloniaUI появилась в шаблонах проектов ?
Достаточно поставить аддон для студии для авалонии. Он должен подтянуть темплейты. А если прямо руками нужно для dotnet cli то вот их статейка на гитхабе.
Приветствую!
Спасибо! Очень классные уроки. Лайк, подписка.
Скажите, (основываясь на своем опыте), если я начну большой проект (уровня интерпрайз) на Авалонии, то может ли произойти такое, что в ходе использования Авалонии я зайду в тупик и будет никак не решить тот или иной момент? Или Авалония на сегодняшний день стабильна и самодостаточна?
Если не брать в расчет мультиплатформерность , то можно ли сказать, что на Авалонии можно создать то же самое, что и на чистом WPF? Или же есть какие-то ограничения.
Да, я знаю что у Авалонии есть доки и прочее, но это не то... Интересует именно опыт специалиста, который уже пощупал эту технологию самостоятельно.
Буду очень благодарен за обратную связь.
P.S.
Уроки понравились тем, что в них показана не какая-то абстрактная херня, как это делают в 99.99% обучающих видео.
У вас именно полноценные и практичные уроки. Это очень здорово, не сходите с этой парадигмы.
Спасибо)
На самом деле в авалонии много чего нету, к чему привыкаешь в WPF) Особенно это касается графики. Там нет различных градиентных кистей помимо линейного. Нет Drawing Brush'a - только VisualBrush, от которого вроде как хотят отказаться в авалонии, но только после реализации DrawingBrush. Матрицы трансформаций реализованы постольку-поскольку. Например RotateTransform там принимает сейчас только угол а точку отсчёта нет. Но это всё решаемо)
То есть реализовать идею всё равно можно, например с градиентами можно решить вопрос с помощью IBitmap. Но в wpf вроде как все проще) Еще в авалонии нет 3D компонентов. Можно как-то OpenGl прикрутить, но нативной поддержки как в WPF нету) Контролы тоже не совсем повторяют богатый функционал WPF) Недавно столкнулся с тем, что в ComboBox в авалонии нет свойства Text, чтобы можно было вбить значение как в TextBox.
Тут все зависит от приложения) Если это не редактор графический какой-нибудь то авалония думаю покроет все запросы уже сейчас) Хотя и редактор можно на ней сделать, если хочется запускать приложение не только на винде, но это будет гораздо сложнее в реализации, чем на WPF)
@@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/
@@anonym1548 Проблема .NET MAUI в том, что это UI фреймворк представляющий собой по сути обёртки над нативными контролами операционной системы. В то время как WPF и AvaloniaUI отрисовывают UI от и до. Поэтому в MAUI будет сложно сделать полностью кастомный контрол не похожий на нативный. Мне кажется эта штука не взлетит, но это моё мнение. Подождем-посмотрим))
Пора обновлять урок под 11 Авалонию структуру похоже сильно переделали, я сейчас пытаюсь раздуплится.
а как добавить Авалонию в визуал студию ? а то что то много разных варинов в интернете, уже начал сомневатся стоит ли с ней связыватся
Стоит. На официальном сайте авалонии скачать расширение для визуалки
А почему необходимо создавать отдельно AvaloniaUI и Wpf если авалония работает под виндой? Вроде бы все затевалось как раз, чтобы написать один раз и работало везде, а не делать отдельную реализацию под каждую систему.
В основном для сравнения. Плюс WPF пока что сам по себе круче авалонии, если брать только винду. Плюс так проще изучать авалонию было, пытаясь перенести компоненты из WPF. В целом решение создавать и на WPF принесло свои бенефиты, в том плане, что на WPF есть куча сторонних библиотек, которые были внедрены в проводник. На авалонии бы внедрение подобного функционала заняло бы овердохрена времени.
"Разрабатывать на Net framework в 2020 это не разумно".
А потом пытаясь замутить графики без сторонних библиотек и компонентов ты понимаешь, что выстрелил себе в колено ибо chart после фреймворка не фурычит. И с этого момента начинаются поиски замены. А из хоть немного адекватного на русском языке находится лишь статья 2013 года на хабре.
История из жизни при разработке на WinForms xD
Слушай, а можешь сделать экскурс по Rider
по горячим клавишам
ну и по тому что популярно в vs
как сделать то же самое в rider
Да я как-то не пользуюсь им. Не хочется лезть туда, где не разбираюсь)
Я новичок.
Я думаю если изучу c# + wpf
Я буду делать сложные программы для видовс.
Тут совсем не для меня.
Мне нужно сделать аналог circle dock.
Что я изучаю не так
Привет! Нужен опыт. Мой курс не совсем для новичков - он задумывался уже для людей, которые имеют опыт построения интерфейсов.
От себя могу посоветовать найти различные видеокурсы по созданию программы от начала до конца и тупо повторять. Практически всегда будет что-то работать не так как в видео и тут уже нужно разбираться, гуглить. И вот так вот по-тихонечку придет понимание. Что не советую, так это изучать язык и технологии в отрыве от создания готовой программы. Например, сегодня изучаем делегаты, завтра события и т.д. Это все нужно смотреть между делом. Основное - это написание программы.
И начинайте писать аналог circle dock уже сейчас. Сначала в отрыве от интерфейса, просто кнопочки. Потом научитесь их как-то группировать. И по тихоньку сделаете все как надо)
@@EgorozhCoding все ты правильно говоришь.
Я к примеру не знаю как добавить ярлык на программу из видовс и как где мне искать (пробовал искать в инете но найти не могу )
Я просто не понимаю как реализовать простой функционал
Вот все говорят изучай
c# изучаю
И везде только говорят как работать с консолью! !
Но как применит знания c# на wpf
Откуда брать команды ведь
К примеру Windows Form с wpf несовместимы и код в них почти разный.
К примеру выучил я c# но как применить эти знания на wpf
Я не понимаю откуда брать команды для wpf
Знаю для тебя это глупый вопрос.
Я не понимаю к примеру откуда брать команды для обработчиков событий типа такой thisClose ()
Идей то очень много но я просто не понимаю как реализовать функционал даже не знаю где искать! ! Пытался найти в google
Смотрю чужой код и не понимаю
@@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
@@Hello_world_2020A посмотрел исходники. Предлагаю вам для начала весь тот код на Visual Basic переписать 1 в 1 на с# для начала с использованием всё того же Windows Forms. Залить это всё на гитхаб. А я потом сделаю стрим или отдельный ролик по переносу функционала из форм в wpf на основе вашего репозитория.
Кстати говоря формы и wpf совместимы. Причем в wpf можно встраивать компоненты форм. Я так делал, когда переносил ColorPicker из форм в WPF. Для начала все встроил как есть, а потом потихоньку переписывал компоненты на wpf.
@@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
Windows forms куда проще :(
И уродливее по UI
Вообще нихера не понятно
Курс не для новичков если что. Нигде это не озвучивалось, думал будет очевидно, учитывая, что не калькулятор пишем.
@@EgorozhCoding а как долго вы в теме програмирования‽