Добрый вечер. Собственно, вопрос заключается в том , как в одном окне отображать разное содержимое К примеру то же приложение киви десктопное. Вводишь пин и там уже совершенно другое отрисовывается
Вообще узнаю для того , чтобы понять: как сделать так , чтоб при запуске десктоп приложения проверялось авторизован ли пользователь, если нет - то будет отображена форма авторизации, иначе будет отображено основной интерфейс программы.
Я профан в это деле и только начал познавать Wpf + mvvm.
И желательно как можно подробнее описать всё это дело
Не кидайтесь тапками, пожалуйста :)
Приложение Киви:
Очень просто. Возьмите ContentPresenter
или ContentControl
.
Положите контент окна, каким он должен быть в начале, в первый UserControl
(пусть будет AuthorizationPresentation
), а контент, который должен появиться потом — во второй UserControl
(MainPresentation
).
Заведите себе два VM-класса: AuthorizationVM
(для авторизации) и MainVM
(для основного контента), а также RootVM
:
class RootVM : INotifyPropertyChanged
{
object currentContentVM;
public object CurrentContentVM
{
get => currentContentVM;
set => /* тут имплементация INotifyPropertyChanged */
}
}
Ваш XAML будет выглядеть так:
<Window ...>
<Window.Resources>
<DataTemplate DataType="{x:Type vm:AuthorizationVM}">
<view:AuthorizationPresentation/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:MainVM}">
<view:MainPresentation/>
</DataTemplate>
</Window.Resources>
<ContentPresenter Content="{Binding CurrentContentVM}"/>
</Window>
Установите DataContext
'ом окна экземпляр RootVM
.
Теперь вы можете регулировать, какой контент показывается в окне, устанавливая в RootVM
свойство CurrentContentVM
. Если записать туда экземпляр AuthorizationVM
, будет показан AuthorizationPresentation
, а если MainVM
— то MainPresentation
.
Всё!
Небольшое дополнение: а как связать между собой VM? Для этого разные VM должны создаваться не в XAML-коде своего View, а отдельно, в начале программы, которая занимается настройкой всего. Для этого имеет смысл установить точку входа в OnStartup
. Примеры того, как переключать VM, тут и тут. Логику приложения, по идее, имеет смысл вынести из OnStartup
в корневую VM.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
//Есть структура Diary,для примера есть один метод ShowData,который выводит данные,но как быть если структур несколько,как мне обращаться к другим...
Не так давно обновил Visual Studio и поставилNET Core 3
Не понимаю, как сделать, что бы подсчитывало не только русские букву но и английские буквы
хочу сделать игру на unity android, есть сфера вокруг которой должен крутиться объект firePoint c помощью джойстика, но объект который крутится вокруг...