Lowprice低贵 2022-08-15 15:20 采纳率: 70%
浏览 40

#WPF#的数据绑定失败,如何解决?

WPF数据绑定失败:
model层的绑定的数据全部失败,ViewModel层可以绑定
先上图:

img

img


ErrorMessage是登录按钮下面空白区域要提示的内容

View层

<TextBox  Style="{DynamicResource TextUserBoxStyle}"  Text="{Binding loginModel.UserName}" FontSize="16" Width="300" Height="35"  />
                <PasswordBox  Style="{DynamicResource TextPasswordBoxStyle}"   command:PasswordHelper.Attach="True" command:PasswordHelper.Password="{Binding loginModel.Password}" FontSize="16" Grid.Row="1" Width="300" Height="35"/>
                <TextBox  Style="{DynamicResource TextVerificationBoxStyle}"  Text="{Binding loginModel.ValidationCode}" FontSize="16" Grid.Row="2" Width="300" Height="35"/>
                <TextBlock  Text="{Binding loginModel.ErrorMessage}" Foreground="Red" Grid.Row="4" TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                <Button Content="登   录" Command="{Binding LoginClick}" Grid.Row="3" Width="300" Height="35" Template="{StaticResource LoginButton}" Foreground="White"/>

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; }
    }

知道的人请指导一下,谢谢

  • 写回答

3条回答 默认 最新

  • Stone_KINGDom 2022-08-17 16:51
    关注

    没看出来用的什么框架,说明框架可以帮助解决问题。而且你界面有个问题,绑定model没有设置mode和updatesourcetrigger属性

    评论

报告相同问题?

问题事件

  • 创建了问题 8月15日

悬赏问题

  • ¥30 不会,学习,有偿解答
  • ¥15 SQL查询语句报错(检查)
  • ¥15 此表中公式应该怎么写
  • ¥15 求HI-TECH PICC 9.50 PL3安装包
  • ¥15 下载ctorch报错,求解
  • ¥15 如何入门学习c语言,单片机
  • ¥15 idea 编辑语言的选择
  • ¥15 Windows下部署Asmjit
  • ¥15 请问双层规划模型的上下层目标函数不一致,是如何保证迭代收敛性的
  • ¥30 微信小程序 前端页面内容搜索