MVVM 轻型绑定

MVVM Light Binding

我正在处理 WPF 项目并使用 MVVM light。文本框绑定似乎不起作用。你知道为什么吗?我通过 MVVM 轻型框架中实现的 ViewModelBase Class 使用 INotifyPorpertyChanged 实现。

我有 2 个文本框用户名和密码...我希望当用户在两个文本字段中输入字符时,链接到这些控件的属性的值会更改。

谢谢。

ViewModel

  #region Helpers Properties

        private UserBLL UserBLLManager;
        public UserBO User;
        public RelayCommand AddNewUserCommand { get; private set; }
        public RelayCommand TryToLoginCommand { get; private set; }

        #endregion

        public MainViewModel()
        {
            if (UserBLLManager == null)//service
                UserBLLManager = new UserBLL();

            if (User == null)//model
                User = new UserBO();

            AddNewUserCommand = new RelayCommand(() => AddNewUser());
            TryToLoginCommand = new RelayCommand(() => TryToLogin());
        }


            public void AddNewUser()
            {
                 //do stuff

            }

        }
    }

型号

public class UserBO:ObservableObject
        {   
            private string username;
            public string Username
            {
                get { return username; }
                set
                {
                    if (value != username)
                    {
                        username = value;
                        RaisePropertyChanged("Username");
                    }
                }
            }

            private string password;
            public string Password
            {
                get { return password; }
                set
                {
                    if (value != password)
                    {
                        password = value;
                        RaisePropertyChanged("Password");
                    }
                }
            }   
        }

服务定位器

    public class ViewModelLocator
    {

        public ViewModelLocator()
        {
            ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);


            SimpleIoc.Default.Register<MainViewModel>();

        }

        public MainViewModel Main
        {
            get
            {
                return ServiceLocator.Current.GetInstance<MainViewModel>();
            }
        }

        public static void Cleanup()
        {
            // TODO Clear the ViewModels
        }
}

查看

    <Window x:Class="MyCook.MainView"
                DataContext="{Binding Main, Source={StaticResource Locator}}">

            <Grid>

                        <TextBox Name="Username_TxtBox" Text="{Binding User.Username,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></TextBox>

                        <TextBox Name="Pwd_TxtBox" Text="{Binding User.Password,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ></TextBox>

</Grid>

1) 用户应该是public。绑定到私有属性没有意义。

2) 如果您希望在用户输入值后更改基础属性,您必须将绑定设置为 TwoWay:

Text="{Binding User.Username,Mode=TwoWay}"

3) 实体 类 不应派生自 ViewModelBase。取而代之的是 ObservableObject.