Разве в MVVM можно смешивать View и ViewModel? По-моему иметь свойства типа Page во ViewModel, или вызывать открытие нового окна из команды ViewModel это нарушение паттерна, или всё-таки так можно?
Будут еще видео по WPF MVVM ? Интересно посмотреть на навигацию между страницами, когда нужно передавать какие-данные между ними и случай, когда для основного окна и дочерних страниц используется одна viewmodel. Как в таком случае передавать viewmodel в дочерние элементы ?
Ребята у меня есть секрет, я умею делать золото из ничего, смотрите вот у меня ничего и оп, все красиво да? И теперь есть золото. Понятно? Ну вот, пользуйтесь моим секретом он понятен для всех.
вы правы, но это можно обойти если работать не с Page, а с другими ViewModels, при вызове которых будет уже вызываться их View. (Может кому ответ пригодится)
Привет, достаточно полезный урок, просто останавливайся на функиональных частях поподробнее и в идеале прикрепляй ссыль на гит или что угодно другое чтобы посмотреть исходники для будующих уроков. Однако не подскажешь, я хочу модернизировать твой код чтобы по кликам на контролы внутри самих страниц они могли сами подпихивать вместо себя другие страницы в главное окно. Есть идеи как это сделать не нарушая MVVM?
допустим у меня есть listbox на странице welcome.xaml, как мне обратиться к этому объекту из главной формы? в welcome.xaml.cs, я его увижу, а в другом классе как? только создав объект класса и задав x:FieldModifier="public"?? но тогда не поменяется содержимое frame ибо это уже новая страница в памяти будет, разве что сделать listbox статическим, но как ??
Тема интересная, но разжевана уже на всех англоязычных каналах, не принижая стараний автора конечно) Вопрос вообщем то следующий. В этом скринкасте показан случай когда есть окно, в нем грид произвольной структуры, который содержит 3 кнопки и фрейм для содержимого в виде страниц. А теперь предположим что нам надо сделать визард. В этом случае кнопки должны находиться в самих страницах. То есть не вне фрейма, а декларироваться вообще в отдельном файле (в страницах). Как бы адаптировать ваш пример так, что бы по нажатию кнопки Test в странице Test, не выводился банальный MessageBox, а допустим происходил переход на другую страницу?
когда пытаюсь назначить обработчик кнопке, то ничего не происходит вот сам обработчик: public ICommand StartClick{ get{ return new RelayCommand( () => SwitchScene(Main)); } }
И кстати, когда в Frame задавал свойства через Binding , то нужно делать это так: Content="{Binding Path=CurrentPage}", а не так: Content="{Binding CurrentPage}". По крайней мере у меня так не работало.
Было бы прикольно рассказать про родительский класс ViewModelBase, я новичок в wpf и мне пришлось пол интернета перелопатить, чтобы допереть, что в метод set у CurrentPage, нужно добавить метод RaisePropertyChanged().
Расскажи пожалуйста подробнее про фриланс. Сам люблю программировать, зарегистрирован на нескольких фриланс площадках, но получить там заказ невозможно, так как есть много "старичков на сайте", которые и забирают заказы(
Как у вас так работает эта конструкция? public ICommand ChangeContent_click { get { return new RelayCommand(() -> MessageBox.Show("7777")); } } У меня компилятор выдает ошибку (Недоступный термин ")" в выражении) и ссылается на эту часть () ->
Всё) нашел) там надо прописать public Page CurrentPage { get { return _currentPage; } set { _curretnPage = value; RaisePropertyChanged(() => CurrentPage);} }
Как ты относишься до реализации через биндинг DataTemplateSelector к ContentControl ? Вроде проще (или это мне .. я зачастую так и делаю прост.. ) и как-то более функционально (мой пример prntscr.com/mx0hwv)
в принципе не плохой вариант, просто зачастую темплейт применяется 1 раз потому его проще инлайн обьявить и все, если нужно будет переиспользовать, я проиграю со своим подходом, и скорее вынесу в отдельный файл
Если за 8 месяцев не ещё понял отвечаю - чтобы переход был заметен, иначе прозрачность увеличится/уменьшится за доли секунды и человек даже не заметит.
Сумбурно и не внятное повествование, часть кода вообще не показана...
Правильно? Правильно!
Разве в MVVM можно смешивать View и ViewModel? По-моему иметь свойства типа Page во ViewModel, или вызывать открытие нового окна из команды ViewModel это нарушение паттерна, или всё-таки так можно?
дайте вам источник git, это будет очень полезно.
самого важного не показал. в свойстве CurrentPage в set пропишите: OnPropertyChanged(nameof(CurrentPage));
Ну это по идее должно быть и так ясно)
Будут еще видео по WPF MVVM ? Интересно посмотреть на навигацию между страницами, когда нужно передавать какие-данные между ними и случай, когда для основного окна и дочерних страниц используется одна viewmodel. Как в таком случае передавать viewmodel в дочерние элементы ?
да, вот все собираюсь записать уроки по впф, запишу многостраничность, а потом открою курс по основам от 0 до midle wpf
Ребят, это не MVVM. SingletonSean Switching Views - WPF MVVM NAVIGATION TUTORIAL #1 - это то, что в вам нужно.
Сделай видео-подкаст, историю твоего развития в программировании. Думаю некоторым будет интересно послушать да и что-то выловить из твоей истории.
я один орнул с лающих собак?))
это ambient sound для всех его видосов:)
вот зачем ты это сказал?) я теперь обратил на это внимание
1700 часов в доту
Ты бы лучьше показал что у тебя спрятано в
Public Page CurrentPage[.......]
@@АлександрСоболев-г6н Не OnPropertyChanged("CurrentPage"), а RaisePropertyChanged("CurrentPage")
Спасибо, как раз искал как это сделать
Ребята у меня есть секрет, я умею делать золото из ничего, смотрите вот у меня ничего и оп, все красиво да? И теперь есть золото. Понятно? Ну вот, пользуйтесь моим секретом он понятен для всех.
ты прям как автор канала...
Так я о том же. Ничего не понятно, зачем такое выкладывать...
Долго не мог понять, где собаки лают)
Получается тут нарушается паттерн Mvvm т.к. ViewModel знает о View то есть в VM используються Pages
вы правы, но это можно обойти если работать не с Page, а с другими ViewModels, при вызове которых будет уже вызываться их View.
(Может кому ответ пригодится)
@@LaiksVel Как это правильно сделать? Есть пример?
всё ребятки ,ставлю ему дизлайк, это не урок а хвастовство , понты
Сделай лучше без пантов :)
it is helpful,thank you so much.
А где найти исходный код?
Привет, достаточно полезный урок, просто останавливайся на функиональных частях поподробнее и в идеале прикрепляй ссыль на гит или что угодно другое чтобы посмотреть исходники для будующих уроков. Однако не подскажешь, я хочу модернизировать твой код чтобы по кликам на контролы внутри самих страниц они могли сами подпихивать вместо себя другие страницы в главное окно. Есть идеи как это сделать не нарушая MVVM?
допустим у меня есть listbox на странице welcome.xaml, как мне обратиться к этому объекту из главной формы? в welcome.xaml.cs, я его увижу, а в другом классе как? только создав объект класса и задав x:FieldModifier="public"?? но тогда не поменяется содержимое frame ибо это уже новая страница в памяти будет, разве что сделать listbox статическим, но как ??
Молодец)
Тема интересная, но разжевана уже на всех англоязычных каналах, не принижая стараний автора конечно) Вопрос вообщем то следующий. В этом скринкасте показан случай когда есть окно, в нем грид произвольной структуры, который содержит 3 кнопки и фрейм для содержимого в виде страниц. А теперь предположим что нам надо сделать визард. В этом случае кнопки должны находиться в самих страницах. То есть не вне фрейма, а декларироваться вообще в отдельном файле (в страницах). Как бы адаптировать ваш пример так, что бы по нажатию кнопки Test в странице Test, не выводился банальный MessageBox, а допустим происходил переход на другую страницу?
Бабушка мэн
по UserControl+MVVM сделай уроки пожалуйста.
А где исходник можно скачать
Хотел бы уроки по Unity увидеть от тебя) и насчёт фриланса тоже было бы интересно послушать)
когда пытаюсь назначить обработчик кнопке, то ничего не происходит
вот сам обработчик:
public ICommand StartClick{
get{
return new RelayCommand( () => SwitchScene(Main));
}
}
И кстати, когда в Frame задавал свойства через Binding , то нужно делать это так:
Content="{Binding Path=CurrentPage}", а не так: Content="{Binding CurrentPage}". По крайней мере у меня так не работало.
*кнопка находится внутри страницы, а не отдельно.
Было бы прикольно рассказать про родительский класс ViewModelBase, я новичок в wpf и мне пришлось пол интернета перелопатить, чтобы допереть, что в метод set у CurrentPage, нужно добавить метод RaisePropertyChanged().
Алексей Кудря все это в след уроке по wpf, он будет на этой недели
Можешь ли ты помочь разобраться в NingaliNET, по твоему видосу слегка не понял как ей пользоваться.
Где исходники?
Расскажи пожалуйста подробнее про фриланс. Сам люблю программировать, зарегистрирован на нескольких фриланс площадках, но получить там заказ невозможно, так как есть много "старичков на сайте", которые и забирают заказы(
спасибо)
Как открыть новое окно при помощи MVVM?
RelayCommand
@@АндрейМещенок Это понятно, но типо просто
Form2 form = new Form();
form.show();
Зачем так хаотично кликать по всем вкладкам? Сразу видно, нервный дотер
Как у вас так работает эта конструкция?
public ICommand ChangeContent_click
{
get
{
return new RelayCommand(() -> MessageBox.Show("7777"));
}
}
У меня компилятор выдает ошибку (Недоступный термин ")" в выражении) и ссылается на эту часть () ->
Eugene Oleynikov =>
СПАСИБО. я очень долго искал чтоб понятно было как же реализован этот паттерн в c# Спасибо.
Привет, помоги пожалуйста. Если я в VM реализую инициализацию каких-либо страниц, то у меня выдает ошибку переполнения стека при запуске.
значит у тебя циклическая инициализация, StackOverflowException
@@BashkaMen столкнулся с такой же проблемой, можешь подсказать, как её решить?
@@dieyoung2672 не допускай рекурсивных инициализаций
Не самая лучшая практика double в цикле for использовать, насколько я знаю... а точнее так даже нельзя делать из-за накопления погрешости в double....
Клёвое видео, хорошо рассказал, но 8:55 НиПаНяТнА : \
Автор как написать такую простую программу circle dock
СДЕЛАЙ УРОК
Жаль, что автор исходный код не скинул
Есть в новом видео про wpf
Как готовить wpf
Подскажи пожалуйста, что у тебя в
public Page CurrentPage
это?
public Page CurrentPage { get { return _currentPage; } set { _curretnPage = value; } }
Какой то бред... Не могу понять почему не работает... Создаю такую же кнопку тест - она работает... А переключение страниц - нет...
Если ICommand меняю с SlowOpacity на MessageBox - сообщение вылазит... Но почему не меняются страницы -_-
В коде меняется значение переменной currentPage, но на вьюшке не отображается
Всё) нашел) там надо прописать public Page CurrentPage { get { return _currentPage; } set { _curretnPage = value; RaisePropertyChanged(() => CurrentPage);} }
Hello world!
Ты классно всё сделал, но пожалуйста, исходный код скинь.
Как ты относишься до реализации через биндинг DataTemplateSelector к ContentControl ?
Вроде проще (или это мне .. я зачастую так и делаю прост.. )
и как-то более функционально (мой пример prntscr.com/mx0hwv)
в принципе не плохой вариант, просто зачастую темплейт применяется 1 раз потому его проще инлайн обьявить и все, если нужно будет переиспользовать, я проиграю со своим подходом, и скорее вынесу в отдельный файл
@@BashkaMen насчет инлайн что-то не понял (
i wish you also made this in English
бедная собачка на фоне, устала лаять
Зачем в task использовать thread.sleep?
Если за 8 месяцев не ещё понял отвечаю - чтобы переход был заметен, иначе прозрачность увеличится/уменьшится за доли секунды и человек даже не заметит.
@@тонистарк-д3ь в таске используют Task.Delay() к нему можно прикрнутить await
Максим Солодовников ладно
👎👎👎👎