Xamarin基于XML的Android日期选择器.如何激发事件以设置在DatePicker上选择的时间
本文关键字:设置 DatePicker 时间 选择 事件 何激发 XML 基于 Android 日期 选择器 | 更新日期: 2023-09-27 18:29:02
我正在使用xml处理一个xamarin android项目,我有一个日期选择器,我想在xml上使用。我如何为日期选择器触发事件?下面是我的datepicker:的xml代码
<DatePicker
android:id="@+id/DatePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:datePickerMode="spinner"
android:calendarViewShown="false" />
活动代码:
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.ChangeDateTime);
hour = DateTime.Now.Hour;
minute = DateTime.Now.Minute;
date = DateTime.Now;
DateTime newDateTime;
Vm.CurrentTime = hour.ToString() + minute.ToString();
TimePicker.CurrentHour = (Java.Lang.Integer)DateTime.Now.Hour;
TimePicker.CurrentMinute = (Java.Lang.Integer)DateTime.Now.Minute;
TimePicker.TimeChanged += delegate (object sender, TimePicker.TimeChangedEventArgs e)
{
Vm.CurrentTime = e.HourOfDay.ToString() + e.Minute.ToString();
};
DatePicker.DateTime = DateTime.Now;
}
我知道使用TimePicker,您可以为TimePicker.TimeChanged代理,但对于DatePicker呢?
如果你在屏幕上有一个按钮,你实际上可以使用下面这样的点击事件:
SomeButton.Click += (sender, e) =>
{
//Do your action here
}
好吧,这对它的工作方式(对于.NET)有点奇怪,但这是Android的设计。
当你调用DatePicker的deInit方法时,你会传递一个IOnDateChangedListener,并在实现接口的OnSelectedDayChange函数上处理它
通常,如果您不自己设置委托,Xamarin实现会有一个弱委托来处理事件,但在这种情况下,由于Init()方法已经需要这个接口,并且假设您总是调用该方法来初始化日期,因此它们没有实现弱委托,因此没有事件。
private EditText _txtdob;
DatePickerDialog _datePickerDialog;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.sign_up);
_txtdob.Focusable = false;
_txtdob.Click += (sender, e) =>
{
_datePickerDialog.Show();
};
_datePickerDialog = new DatePickerDialog(this, (sender, args) =>
{
_txtdob.Text = args.Date.ToString("dd/MM/yyyy");
ViewModel.NewUser.DOB = args.Date.Date;
},
DateTime.Now.Year, DateTime.Now.Month - 1, DateTime.Now.Day);
}
在这里,单击_datePickerDialog时将采用今天的默认日期,当用户选择其他日期时,它将更改为用户选择的日期。此处为ViewModel.NewUser.DOB=args。日期。日期;代码行采用用户选择的新日期,其中NewUser是视图模型中的一个属性,使用UserDto创建新用户,DOB是UserDto中的datetime属性。