Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在一个按钮上执行两个继电器命令-WPF_C#_Wpf_Mvvm_User Controls_Visibility - Fatal编程技术网

C# 在一个按钮上执行两个继电器命令-WPF

C# 在一个按钮上执行两个继电器命令-WPF,c#,wpf,mvvm,user-controls,visibility,C#,Wpf,Mvvm,User Controls,Visibility,我有一个按钮,允许用户注册帐户。当用户按下按钮时,我有一个中继命令,执行一个将其详细信息提交到数据库的方法。如果成功,我希望将用户转移到登录屏幕 我使用了EnumStateVisibility,当我使用一个转换器触发可见或隐藏的UserControls时 以下是我的代码: 在媒体上向数据库提交帐户详细信息 // ///向数据库提交用户详细信息并检查条件 /// public RelayCommand Submitregister帐户详细信息 { 得到 { SubmitAccountDetai

我有一个按钮,允许用户注册帐户。当用户按下按钮时,我有一个中继命令,执行一个将其详细信息提交到数据库的方法。如果成功,我希望将用户转移到登录屏幕

我使用了EnumStateVisibility,当我使用一个转换器触发可见或隐藏的UserControls时

以下是我的代码:

在媒体上向数据库提交帐户详细信息

//
///向数据库提交用户详细信息并检查条件
/// 
public RelayCommand Submitregister帐户详细信息
{
得到
{
SubmitAccountDetails submit=新建SubmitAccountDetails();
返回新的RelayCommand(参数=>submit.SubmitLoginUserDetails(电子邮件地址、邮件、密码、当前状态));
}
}
//枚举状态到可见性转换器,在窗口中打开和关闭登录和注册视图
公共对象转换(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
LoginVisibilityState=(LoginVisibilityState)值;
LoginVisibilityStates para=(LoginVisibilityStates)Enum.Parse(typeof(LoginVisibilityStates),parameter.ToString());
如果(状态==第段)
返回可见性。可见;
其他的
返回可见性。隐藏;
}
公共对象转换回(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
抛出新的NotImplementedException();
}
//当用户按下不同按钮时切换UserControl的逻辑,带有
//此relaycommand设置为命令,“Login”或“Register”设置为命令参数
私人登录可视状态_currentState;
公共登录可见性状态CurrentState
{
得到
{
返回当前状态;
}
设置
{
_当前状态=值;
OnPropertyChanged(“当前状态”);
}
}
#区域命令
公共中继命令开关命令
{
得到
{
返回新的RelayCommand(ChangeState);
}
}
#端区
公共void ChangeState(对象参数)
{
开关(参数.ToString())
{
“登记册”一案:
CurrentState=LoginVisibilityState.Register;
打破
案例“登录”:
CurrentState=LoginVisibilityState.Login;
打破
违约:
打破
}
}

您只能执行一个命令,但在该命令的
执行
方法中,您可以执行任何您想要的操作,包括调用另一个命令、设置属性或调用方法:

return new RelayCommand(param => 
{
    submit.SubmitLoginUserDetails(EmailAddress, Mail, Password, CurrentState);
    //set the property or do whatever here:
    LoginVisibilityStates = LoginVisibilityStates.Login;
});

为什么不创建一个新的命令/方法来调用另外两个呢?也许是复制品
return new RelayCommand(param => 
{
    submit.SubmitLoginUserDetails(EmailAddress, Mail, Password, CurrentState);
    //set the property or do whatever here:
    LoginVisibilityStates = LoginVisibilityStates.Login;
});