Спасибо большое. Помимо WPF количество дополнительной ( ценнейшей информации ) просто зашкаливает . Буду качать все уроки на диск , так они сохранее будут .
Чтобы достаточно быстро что то напрограммировать нужно очень много знать просто наизусть из разметки, иначе всё идёт через время и боль как у меня)). Видео самые лучшие из серии MVVM, остальное такой хлам, кстати есть есть ещё поле PasswordBox по моему, я его убрал пока из свого проекта потому что с ним я так понимаю вообще какаето дикая история при использовании MVVM))
Так в любой области что бы что-то начало получаться, надо потратить 10 000 часов. По себе заметил что после знакомства с новой технологией только через год ежедневной работы с ней более-менее исчезают детские проблемы, через два года можешь сам что-то изобретать и подмечать ошибки у других, а через три года можно считать что ты в ней более-менее разобрался. Это как раз примерно 10 000 часов и есть.
Павел, не думали свои курсы организовать? А то курсов сейчас всевозможных много развелось, но многие из них оставляют желать лучшего. Думаю, у Вас бы отличный курс получился. Я бы точно пошел, чтобы закрепить знания в C#.
Отличное видео! Спасибо! Если не сложно подскажите пожалуйста. Есть связанные по ключу поля БД, есть основная форма с текстблоком, и форма редактирования с комбобоксом. Через Linq to SQL, сформированы классы. При привязке одного свойства к комбобоксу и текстбоксу, возникает исключение, что одно свойство связано с 2мя граф. элементами. Как правильно поступить в данной ситуации? Делать ещё одно поле в БД не правильно мне кажется. Если делаю новое свойство и в классе sql присваиваю ему значение, ошибка та же (. Уже голову сломал. Может подскажете хоть в какую сторону копать ?
Здравствуйте! Во-первых, Вам надо отделить мух от котлет. Интерфейс должен быть отдельно, База данных отдельно. Добавление поля ввода, или чек-бокса на экран никак не должно влиять на базу данных. Создайте полноценную модель-представления. И в ней руководите Базой данных. Сразу куча ошибок уйдёт. Базу данных отладить надо в консольном приложении.
@@Shmachilin это всё отделено, может я не совсем корректно выражаюсь. Я генерирую сущносные классы БД Linq to SQL. Обрабатываю данные в классе viewmodel, селектирую, группирую, сортирую не важно ... полученный экземпляр класса подсовываю к datacontext формы. При изменении в бд возникает событие в свойстве сгенерированного автоматически класса и вызывается фунция SendPropertyChanged("имя"), которое оповещает окно об изменении. Если я просматриваю данные, проблем нет, в 2 разных формах у меня привязанные свойства обновляются и сама бд и логика работает правильно. Но если я в одной форме, пытаюсь присвоить свойству новое значение, которое так же привязано к другому графическому элементу формы, этот код: if(this.ИМЯ.HasLoadedOrAssignedValue == true) Генерирует исключение System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException() Причем связано это именно с binding-гом этого свойства к 2м элементам. Если я отвязываюсь от одного элемента, все работает как надо.
Здравстуйте Павел. Недавно начал смотреть ваши видео так как нашел работу под WPF. По немножку осваиваю МВВМ и никак не пойму как правельно работать с окнами. Прочел много где про юзерконтролы и как их применить в мввм, но везде одно и тоже. Один меню с какойто стороны и меняешь их в окне. Можно будет обьяснить нормально что да как или же есть видео и я пока что не дошел до него.
@@Shmachilin не пойму как правильно сделать навигацию в мввм. Сейчас использую одно окно и загружаю в неё страницы сколько надо. Но на сколько я прочёл и смотрел в ютубе мне вообще только юзеркотролы надо. Пфтаюсь сделать простую программку, которое при запуске просит пароль для входа(из базы данных) а потом переход на главную страничку. От туда на другие страницы и обратно на главную.
Аналогичная задача. Пытался разобраться с сервисом навигации, потом решил что сначало напишу основную логику. Если за это время у автора выйдет видео на эту тему, было бы очень круто. Заранее спасибо. Хотелось бы также увидеть подобный формат по ксамарину, так как конечная цель это написать приложение. Готов донатить, скажите как))
Спасибо за видео! Подскажите, не получается нормально реализовать DataTrigger как в конце. Я использую DataGrid, прописывал и в CellStyle, и в DataGrid.ItemTemplate, и ставил TemplateColumn и туда триггер прописывал. Например сделать фон красным если поле пустое:
И это работает, если я отредактирую поле. А вот в начале, после того как вьюшка построится - не работает.
@@Shmachilin спасибо за ответ. Да, я вчера уже ближе к утру разобрался, все работает. Правильно делать Binding="{Binding Artist}" Value="{x:Null}". Но я все равно не понимаю, почему так. Artist это простое стринговое свойство. Если я редактирую элемент и стираю содержимое, то фон красится, но если я тут же обновлю datagrid, то ячейка опять становится дефолтной. Получается, что при создании объекта модели, если в string свойство писать пустую строку, то туда пишется null? А если уже потом, редактируя, руками записать "", то запишется пустая строка? Я еще плохо разбираюсь в таких механиках, хотелось бы знать почему всё именно так)
@@Shmachilin Tracks.Add(new Track(file.Name, file.FullName, tags.Tag.FirstPerformer, tags.Tag.Title, tags.Tag.Album)); Здесь библиотека TagLib читает теги из аудиофайла. В поле Artist пишется tags.Tag.FirstPerformer. В самой библиотеке оно определено так string TagLib.Tag.FirstPerformer {get;}
Мощные уроки! Павел -огромное спасибо и побольше Вам добра!
Спасибо большое. Помимо WPF количество дополнительной ( ценнейшей информации ) просто зашкаливает . Буду качать все уроки на диск , так они сохранее будут .
Чтобы достаточно быстро что то напрограммировать нужно очень много знать просто наизусть из разметки, иначе всё идёт через время и боль как у меня)). Видео самые лучшие из серии MVVM, остальное такой хлам, кстати есть есть ещё поле PasswordBox по моему, я его убрал пока из свого проекта потому что с ним я так понимаю вообще какаето дикая история при использовании MVVM))
Так в любой области что бы что-то начало получаться, надо потратить 10 000 часов. По себе заметил что после знакомства с новой технологией только через год ежедневной работы с ней более-менее исчезают детские проблемы, через два года можешь сам что-то изобретать и подмечать ошибки у других, а через три года можно считать что ты в ней более-менее разобрался. Это как раз примерно 10 000 часов и есть.
Классная серия уроков. Спасибо.
Павел, не думали свои курсы организовать?
А то курсов сейчас всевозможных много развелось, но многие из них оставляют желать лучшего. Думаю, у Вас бы отличный курс получился. Я бы точно пошел, чтобы закрепить знания в C#.
Павел, здравствуйте. А что думаете насчет вышедшего MAUI?
Отличное видео! Спасибо! Если не сложно подскажите пожалуйста. Есть связанные по ключу поля БД, есть основная форма с текстблоком, и форма редактирования с комбобоксом. Через Linq to SQL, сформированы классы. При привязке одного свойства к комбобоксу и текстбоксу, возникает исключение, что одно свойство связано с 2мя граф. элементами. Как правильно поступить в данной ситуации? Делать ещё одно поле в БД не правильно мне кажется. Если делаю новое свойство и в классе sql присваиваю ему значение, ошибка та же (. Уже голову сломал. Может подскажете хоть в какую сторону копать ?
Здравствуйте! Во-первых, Вам надо отделить мух от котлет. Интерфейс должен быть отдельно, База данных отдельно. Добавление поля ввода, или чек-бокса на экран никак не должно влиять на базу данных. Создайте полноценную модель-представления. И в ней руководите Базой данных. Сразу куча ошибок уйдёт. Базу данных отладить надо в консольном приложении.
@@Shmachilin это всё отделено, может я не совсем корректно выражаюсь. Я генерирую сущносные классы БД Linq to SQL. Обрабатываю данные в классе viewmodel, селектирую, группирую, сортирую не важно ... полученный экземпляр класса подсовываю к datacontext формы. При изменении в бд возникает событие в свойстве сгенерированного автоматически класса и вызывается фунция SendPropertyChanged("имя"), которое оповещает окно об изменении. Если я просматриваю данные, проблем нет, в 2 разных формах у меня привязанные свойства обновляются и сама бд и логика работает правильно. Но если я в одной форме, пытаюсь присвоить свойству новое значение, которое так же привязано к другому графическому элементу формы, этот код: if(this.ИМЯ.HasLoadedOrAssignedValue == true)
Генерирует исключение System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException()
Причем связано это именно с binding-гом этого свойства к 2м элементам. Если я отвязываюсь от одного элемента, все работает как надо.
И это ситуация получается только при отношении "один ко многим"
Здравстуйте Павел. Недавно начал смотреть ваши видео так как нашел работу под WPF. По немножку осваиваю МВВМ и никак не пойму как правельно работать с окнами. Прочел много где про юзерконтролы и как их применить в мввм, но везде одно и тоже. Один меню с какойто стороны и меняешь их в окне. Можно будет обьяснить нормально что да как или же есть видео и я пока что не дошел до него.
Здравствуйте! Напишите какую конкретно задачу пытаетесь решить и что непонятно.
@@Shmachilin не пойму как правильно сделать навигацию в мввм. Сейчас использую одно окно и загружаю в неё страницы сколько надо. Но на сколько я прочёл и смотрел в ютубе мне вообще только юзеркотролы надо. Пфтаюсь сделать простую программку, которое при запуске просит пароль для входа(из базы данных) а потом переход на главную страничку. От туда на другие страницы и обратно на главную.
Аналогичная задача. Пытался разобраться с сервисом навигации, потом решил что сначало напишу основную логику. Если за это время у автора выйдет видео на эту тему, было бы очень круто. Заранее спасибо. Хотелось бы также увидеть подобный формат по ксамарину, так как конечная цель это написать приложение. Готов донатить, скажите как))
Спасибо за видео!
Подскажите, не получается нормально реализовать DataTrigger как в конце. Я использую DataGrid, прописывал и в CellStyle, и в DataGrid.ItemTemplate, и ставил TemplateColumn и туда триггер прописывал. Например сделать фон красным если поле пустое:
И это работает, если я отредактирую поле. А вот в начале, после того как вьюшка построится - не работает.
А не может быть такого, что Artist is null?
@@Shmachilin спасибо за ответ. Да, я вчера уже ближе к утру разобрался, все работает. Правильно делать Binding="{Binding Artist}" Value="{x:Null}". Но я все равно не понимаю, почему так. Artist это простое стринговое свойство. Если я редактирую элемент и стираю содержимое, то фон красится, но если я тут же обновлю datagrid, то ячейка опять становится дефолтной. Получается, что при создании объекта модели, если в string свойство писать пустую строку, то туда пишется null? А если уже потом, редактируя, руками записать "", то запишется пустая строка? Я еще плохо разбираюсь в таких механиках, хотелось бы знать почему всё именно так)
Как у Вас модель создаётся?
@@Shmachilin
Tracks.Add(new Track(file.Name, file.FullName, tags.Tag.FirstPerformer, tags.Tag.Title, tags.Tag.Album));
Здесь библиотека TagLib читает теги из аудиофайла. В поле Artist пишется tags.Tag.FirstPerformer. В самой библиотеке оно определено так string TagLib.Tag.FirstPerformer {get;}
А каким образом wpf подсказывает как привязывать папки и файлы в source?
@@MegaTembr wpf не подсказывает про привязки. Может речь о Студии?
@ я понял, это был resharper)
Мощные уроки! Павел -огромное спасибо и побольше Вам добра!