如果时间没有改变,TimePicker PropertyChanged事件不会被触发

时间:2018-03-07 06:53:32

标签: android xamarin.forms xamarin.android

我在Xamarin Forms项目中使用了24小时TimePickerTimePicker在我的iOS项目中完美运行,但在Android上,UnFocused事件未被调用,当我点击PropertyChange或{{{{}}时,Ok事件也未被触发1}}不改变时间。

时间选择器打开时,XAML中绑定了时间值,我希望在点击Cancel时设置相同的时间而不更改时间。

假设我已经从XAML绑定了7小时,Ok会在选中TimePicker的情况下打开,但是如果我点击7:00Ok而不更改它设置的时间Cancel }。

以下是我在Android中的24小时0: 00实施:

TimePicker

当我点击 public class TimePicker24Hours : ViewRenderer<TimePicker, Android.Widget.EditText>, TimePickerDialog.IOnTimeSetListener, IJavaObject, IDisposable { private TimePickerDialog dialog = null; protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e) { base.OnElementChanged(e); this.SetNativeControl(new Android.Widget.EditText(Forms.Context)); this.Control.Click += Control_Click; this.Control.Text = DateTime.Now.ToString("HH:mm"); this.Control.KeyListener = null; this.Control.FocusChange += Control_FocusChange; } void Control_FocusChange(object sender, Android.Views.View.FocusChangeEventArgs e) { if (e.HasFocus) ShowTimePicker(); } void Control_Click(object sender, EventArgs e) { ShowTimePicker(); } private void ShowTimePicker() { if (dialog == null) { dialog = new TimePickerDialog(Forms.Context, this, 0, 0, true); } dialog.Show(); } public void OnTimeSet(Android.Widget.TimePicker view, int hourOfDay, int minute) { var time = new TimeSpan(hourOfDay, minute, 0); this.Element.SetValue(TimePicker.TimeProperty, time); this.Control.Text = time.ToString(@"hh\:mm"); } OnTimeSet时会调用Ok方法,但如果我不更改,则Cancel小时为0分钟时间。

当TimePicker未聚焦时,Android实现中的0事件不会被触发。

0 个答案:

没有答案