当用户注册她的数据时,我有一个基本的注册页面,我将这个数据的对象保存在Settings
静态类的静态字段中,所以我可以用其他注册页面填充公共字段,比如first_name
,last_name
,email
等。所以用户不必再次重新填充它们。
我的具体情况是,这些常见页面之一是基本注册页面本身(不包括某些字段)。 首先,了解常见字段的样子:
<Entry Text="{Binding RegistrationData.first_name, Mode=TwoWay}" Grid.Row="1" Grid.Column="0" Placeholder="{Resx:TranslateExtension Text=lbFirstName}"/>
<Entry Text="{Binding RegistrationData.last_name, Mode=TwoWay}" Grid.Row="2" Grid.Column="0" Placeholder="{Resx:TranslateExtension Text=lbLastName}"/>
<Entry Text="{Binding RegistrationData.email, Mode=TwoWay}" Keyboard="Email" Grid.Row="3" Grid.Column="0" Placeholder="{Resx:TranslateExtension Text=lbEmail}"/>
显然该模型实现了INotifyPropertyChanged
。
在Register页面的构造函数中:
public Register(int userType) //when I call this constructor the registration page represent some sub-registration pages
{
InitializeComponent();
var oRegistrationViewModel = (RegistrationViewModel)BindingContext;
if (Settings.UserData != null)
{
oRegistrationViewModel.RegistrationData = Settings.UserData;
BindingContext = oRegistrationViewModel;
}
但它不起作用,当我重置BindingContext
数据未绑定到字段时。
我在视图模型中Settings.UserData
的{{1}}方法中设置OnRegister
,当从基本页面调用时(使用默认构造函数)
我正在使用RegisterCommand
我在XAML中设置了BindingContext:
GalaSoft.MvvmLight
BindingContext="{Binding Register, Source={StaticResource Locator}}"
是构造函数中Locator
的键:
ViewModelLocator
和这个属性:
SimpleIoc.Default.Register<RegistrationViewModel>();
我需要知道何时在XAML中使用绑定设置public RegistrationViewModel Register
{
get
{
return SimpleIoc.Default.GetInstance<RegistrationViewModel>();
}
}
,这是在调用BindingContext
时发生的,当我在重置InitializeComponent()
数据后仍然没有显示时调用它。