【发布时间】:2015-02-10 16:54:44
【问题描述】:
我正在处理一个 WPF 项目并使用 MVVM 灯。文本框绑定似乎不起作用。你知道为什么吗?我通过MVVM轻框架中实现的ViewModelBase类使用INotifyPorpertyChanged实现。
我有 2 个文本框用户名和密码...我希望当用户在两个文本字段中输入字符时,链接到这些控件的属性的值会发生变化。
谢谢。
视图模型
#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>
【问题讨论】:
标签: binding mvvm-light inotifypropertychanged