加载 ViewModel 时在 Picker 和 DatePicker 上绑定默认值
Binding default values on Picker and DatePicker when ViewModel loading
我想在 DatePicker
上设置选定的日期,在 Picker
上设置选定的项目,当 ViewModel
class 加载时。我是怎么做到的
public override void OnNavigatedTo(INavigationParameters parameters)
{
base.OnNavigatedTo(parameters);
var objL = parameters.GetValue<LeaveManagement>("LeaveItem");
SelectedFromDate = objL.StartDate;
SelectedToDate = objL.EndDate;
SelectedLeaveType = new SpinnerBind { Name = objL.LeaveTypeCD, Value = objL.LeaveTypeId };
}
private DateTime? _selectedFromDate;
public DateTime? SelectedFromDate
{
get { return _selectedFromDate; }
set { _selectedFromDate = value; }
}
private DateTime? _selectedToDate;
public DateTime? SelectedToDate
{
get { return _selectedToDate; }
set { _selectedToDate = value; }
}
private ObservableCollection<SpinnerBind> _leaveType;
public ObservableCollection<SpinnerBind> LeaveType
{
get { return _leaveType; }
set
{
SetProperty(ref _leaveType, value);
}
}
private SpinnerBind _selectedLeaveType;
public SpinnerBind SelectedLeaveType
{
get { return _selectedLeaveType; }
set
{
SetProperty(ref _selectedLeaveType, value);
}
}
这是我的 XAMl
<RelativeLayout>
<DatePicker Format="dd/MM/yyyy" Date="{Binding SelectedFromDate}"/>
<DatePicker Format="dd/MM/yyyy" Date="{Binding SelectedToDate}"/>
<Picker SelectedItem="{Binding SelectedLeaveType, Mode=TwoWay}" ItemsSource="{Binding LeaveType,Mode=TwoWay}"
TitleColor="Black" TextColor="Black" Title="--Select--"/>
</RelativeLayout>
但是 Startdate、Enddate 和 SelectedLeaveType 的所有值都没有设置。但是 Picker
与 LeaveType
绑定,我该如何解决这个问题?
当视图模型的 属性 发生变化时,需要引发 INotifyPropertyChanged.PropertyChanged
来更新绑定。
Prism 为视图模型提供 BindableBase
基础 class,它有一个 SetProperty
方法,通常用于更新支持字段并在需要时引发事件。
也就是说,你想要这样的东西
public DateTime? SelectedFromDate
{
get { return _selectedFromDate; }
set { SetProperty( ref _selectedFromDate, value ); }
}
编辑: 要将 Picker
绑定到默认选定项,请从 Source.
初始化 SelectedLeaveType
我想在 DatePicker
上设置选定的日期,在 Picker
上设置选定的项目,当 ViewModel
class 加载时。我是怎么做到的
public override void OnNavigatedTo(INavigationParameters parameters)
{
base.OnNavigatedTo(parameters);
var objL = parameters.GetValue<LeaveManagement>("LeaveItem");
SelectedFromDate = objL.StartDate;
SelectedToDate = objL.EndDate;
SelectedLeaveType = new SpinnerBind { Name = objL.LeaveTypeCD, Value = objL.LeaveTypeId };
}
private DateTime? _selectedFromDate;
public DateTime? SelectedFromDate
{
get { return _selectedFromDate; }
set { _selectedFromDate = value; }
}
private DateTime? _selectedToDate;
public DateTime? SelectedToDate
{
get { return _selectedToDate; }
set { _selectedToDate = value; }
}
private ObservableCollection<SpinnerBind> _leaveType;
public ObservableCollection<SpinnerBind> LeaveType
{
get { return _leaveType; }
set
{
SetProperty(ref _leaveType, value);
}
}
private SpinnerBind _selectedLeaveType;
public SpinnerBind SelectedLeaveType
{
get { return _selectedLeaveType; }
set
{
SetProperty(ref _selectedLeaveType, value);
}
}
这是我的 XAMl
<RelativeLayout>
<DatePicker Format="dd/MM/yyyy" Date="{Binding SelectedFromDate}"/>
<DatePicker Format="dd/MM/yyyy" Date="{Binding SelectedToDate}"/>
<Picker SelectedItem="{Binding SelectedLeaveType, Mode=TwoWay}" ItemsSource="{Binding LeaveType,Mode=TwoWay}"
TitleColor="Black" TextColor="Black" Title="--Select--"/>
</RelativeLayout>
但是 Startdate、Enddate 和 SelectedLeaveType 的所有值都没有设置。但是 Picker
与 LeaveType
绑定,我该如何解决这个问题?
当视图模型的 属性 发生变化时,需要引发 INotifyPropertyChanged.PropertyChanged
来更新绑定。
Prism 为视图模型提供 BindableBase
基础 class,它有一个 SetProperty
方法,通常用于更新支持字段并在需要时引发事件。
也就是说,你想要这样的东西
public DateTime? SelectedFromDate
{
get { return _selectedFromDate; }
set { SetProperty( ref _selectedFromDate, value ); }
}
编辑: 要将 Picker
绑定到默认选定项,请从 Source.
SelectedLeaveType