我想實現我的xamarin移動項目MVVM模式。使用MVVM模式,而無需使用現有的MVVM頁面導航構架
我有以下文件MVVM
- LoginView
- LoginViewModel
- BaseViewModel
以下是我LoginViewModel
public class LoginViewModel : BaseViewModel
{
private bool isLoginIndicator= false;
private string etUserName;
private string etPassword;
public LoginViewModel()
{
OnLogin = new Command(doLogin ,()=>!LoginIndicator);
MessagingCenter.Subscribe<IMessage, EventType>(this, RestApi.UI_EVENT, (sender, eventType) =>
{
LoginIndicator = false;
if (eventType.status)
{
Application.Current.MainPage.DisplayAlert(AppResources.success, "Login done", "Ok");
}
else
{
Application.Current.MainPage.DisplayAlert(AppResources.failed, eventType.errorMessage, "Ok");
}
});
}
public bool LoginIndicator
{
get { return isLoginIndicator; }
set
{
isLoginIndicator = value;
OnPropertyChanged("LoginIndicator");
OnLogin.ChangeCanExecute();
}
}
public string UserName
{
get { return etUserName; }
set
{
etUserName = value;
OnPropertyChanged("UserName");
}
}
public string Password
{
get { return etPassword; }
set
{
etPassword = value;
OnPropertyChanged("Password");
}
}
public Command OnLogin { get; }
void doLogin()
{
LoginIndicator = true;
UserRequest user = new UserRequest();
user.userName = etUserName;
user.password = etPassword;
user.companyId = "CEE";
user.appVersion = Constants.getAppVersion();
user.osVersion = Constants.getOSVersion();
user.deviceId = Constants.getDeviceModel() + " " + Constants.getDevicePlatform();
new RestApi().userLogin(JsonConvert.SerializeObject(user));
}
}
該類通常使得Web服務調用時OnLogin
命令從按鈕激發和Message
使用MessageCenter
現在我想轉到我的MainPage
這是母版頁一旦用戶成功,因此我需要導航到母版頁時eventType.status
是真實的記錄播出內Message Subscriber
,但我不知道我怎樣才能正確地根據MVVM模式切換不同頁面。
我試圖在網上搜索,我發現有可用像MVVMCross
和MVVMLight
等現成的框架,但我不希望使用那些依賴條件,並願意執行導航一些其他的方式,如果任何人都可以提出
Application.Current.MainPage =新MyFirstPageAfterLogin();它不正確? –
它會是一個適當的方式來做到這一點在MVVM模式?不知道雖然:) – Hunt
我不知道...我認爲你應該從ViewModel發送一個消息中心視圖和視圖使用Application.Current.MainPage =新...但我不知道。我不知道MVVM非常好... –