【发布时间】:2016-04-29 10:30:51
【问题描述】:
我仍在学习这个 C# MVVM WPF 东西,我在理解一些概念时遇到了一些麻烦,我已经尝试了一些类似的东西,但遗憾的是没有结果。
所以我想>>>如果登录成功打开一个新的 ViewModel 将一个类(你可以在评论中看到,确切的位置)传递给 GeneralViewModel 有人可以在这里帮我一些代码,以便你更好地理解.
提前致谢:)
LoginViewModel
WifiAP wa;
#region fields
private TokenRequest tk;
public DelegateCommand _loginCommand { get; set; }
public LoginViewModel()
{
wa = new WifiAP();
_loginCommand = new DelegateCommand(
(s) => { login(); }, //Execute
(s) => { return !string.IsNullOrEmpty(_email); } //CanExecute
);
}
public DelegateCommand LoginCommand
{
get { return _loginCommand; }
}
public async void login()
{
var sendRequest = new TokenRequest
{
email = Email,
mac = getMac(),
platform="windowsdesktop"
};
//Get Token
var response = await CommunicationWebServices.PostASM("self/token", "",sendRequest);
if(response.StatusCode == HttpStatusCode.OK)
{
string responseS = await response.Content.ReadAsStringAsync();
var aux = JsonConvert.DeserializeObject<TokenOK>(responseS); // I have the Token in the Aux
var passwordMD5 = hashingMD5(Password);
var stringConcat = aux.token + passwordMD5;
var finalMD5 = hashingMD5(stringConcat);
// Now you can login
var sendRequestLogin = new LoginRequest
{
email = Email,
tokenpassword = finalMD5,
mac = getMac(),
platform = "windowsdesktop"
};
var responseLogin = await CommunicationWebServices.PostASM("self/login", aux.token, sendRequestLogin);
if(responseLogin.StatusCode == HttpStatusCode.OK)
{
string responseL = await responseLogin.Content.ReadAsStringAsync();
var auth = JsonConvert.DeserializeObject<LoginAnswer>(responseL);
// Change to GeneralViewModel and send the auth variable
}else {//...}}
登录视图
<UserControl.DataContext>
<ViewModel:LoginViewModel/>
</UserControl.DataContext>
<Button x:Name="buttonLogin" Content="Login"
Command="{Binding LoginCommand}" HorizontalAlignment="Left" Margin="274,305,0,0" VerticalAlignment="Top" Width="248" Style="{DynamicResource FlatButtonStyle}" Height="30" />
【问题讨论】:
-
嗨@PeterB 你能解释一下吗? LoginCommand 被正确调用,我只想在登录函数中间更改为 generalview 并发送 var auth(来自 web 服务的答案)
-
好像我误解了这个问题,我以为你想插入一个新的 ViewModel 作为 GeneralViewModel。
-
不,彼得 B。我已经知道该怎么做了。我只想知道如何通过 ViewModel 发送一个类,而不是仅仅在视图中使用绑定进行更改。
标签: c# wpf web-services mvvm navigation