WPF数据绑定失败:
model层的绑定的数据全部失败,ViewModel层可以绑定
先上图:
View层
Style="{DynamicResource TextUserBoxStyle}" Text="{Binding loginModel.UserName}" FontSize="16" Width="300" Height="35" />
Style="{DynamicResource TextPasswordBoxStyle}" command:PasswordHelper.Attach="True" command:PasswordHelper.Password="{Binding loginModel.Password}" FontSize="16" Grid.Row="1" Width="300" Height="35"/>
Style="{DynamicResource TextVerificationBoxStyle}" Text="{Binding loginModel.ValidationCode}" FontSize="16" Grid.Row="2" Width="300" Height="35"/>
Text="{Binding loginModel.ErrorMessage}" Foreground="Red" Grid.Row="4" TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center"/>
View.cs
public LoginView()
{
InitializeComponent();
DataContext = new LoginViewModel();
}
ViewModel层
public partial class LoginViewModel : ObservableObject
{
public ICommand closeWindow { get; }
public ICommand LoginClick { get; }
public LoginViewModel()
{
closeWindow = new RelayCommand(DoClose);
LoginClick = new RelayCommand(DoLogin);
}
void DoClose()
{
//关闭窗口(知道如何把View的窗体控件传参到此处吗?我好使用e.close()关闭它 )
}
void DoLogin()
{
LoginModel loginModel = new LoginModel();
if (string.IsNullOrEmpty(loginModel.UserName))
{
loginModel.ErrorMessage = "请输入账号!";
return;
}
if (string.IsNullOrEmpty(loginModel.Password))
{
loginModel.ErrorMessage = "请输入密码!";
return;
}
if (string.IsNullOrEmpty(loginModel.ValidationCode))
{
loginModel.ErrorMessage = "请输入验证码!";
return;
}
}
}
Model层
public class LoginModel:ObservableObject
{
public string userName;
public string UserName
{
get => userName;
set
{
userName = value;
OnPropertyChanged(nameof(UserName));
}
}//用户名输入框绑定源
public string password;
public string Password
{
get => password;
set
{
password = value;
OnPropertyChanged(nameof(Password));
}
}//密码输入框绑定源
public string validationCode;
public string ValidationCode
{
get => validationCode;
set
{
validationCode = value;
OnPropertyChanged(nameof(ValidationCode));
}
}//验证码输入框绑定源
public string ErrorMessage { get; set; }
}
知道的人请指导一下,谢谢
没看出来用的什么框架,说明框架可以帮助解决问题。而且你界面有个问题,绑定model没有设置mode和updatesourcetrigger属性
LoginView界面的数据源是LoginViewModel,
LoginViewModel 里面没有loginModel 这个属性
给LoginViewModel 中加个:
public string _loginModel;
public string loginModel
{
get => _loginModel;
set
{
_loginModel= value;
OnPropertyChanged(nameof(loginModel));
}
}
解决了吗?