【发布时间】:2019-09-03 13:43:31
【问题描述】:
我正在开发一个基于 Xamarin.Forms 的 android 应用程序,并且我创建了一个显示 TimePicker(不是 TimePickerDialog)的自定义对话框。
到目前为止,一切正常,除了我只找到一种方法来检查用户是否在 TimePicker 中进行了选择,即 TimePicker.Unfocused。
遗憾的是,该事件不会返回选择器中两个按钮中的哪一个被点击:(
我尝试通过节省最初创建 TimePicker 的时间来解决这个问题,并用它来比较它是否被用户更改。现在我已经对其进行了更改,以便方便地节省您更改默认时间的需要,并注意到现在这是一个问题,因为我不再知道哪个按钮用于关闭 TimePicker。
var picker = new TimePicker() {
// if 'minutes' is set, use it's value as default value for the picker, otherwise the day beginning
Time = (minutes > -1 ? new TimeSpan(0, minutes, 0) : dayBegin),
};
picker.Unfocused += (sndr, evt) => {
var tp = (TimePicker)sndr;
var changed = tp.Time != oldTime;
if (changed) {
Debug.WriteLine("unfocused: " + tp.Time);
}
else {
Debug.WriteLine("canceled?");
}
dialog.Close(cpDialog.DialogResult.Yes);
// close my own dialog that showed the picker
};
如果 .Unfocused += 的事件除了 IsFocused 之外还包括结束选择,那就太好了。 或者,如果有可选的附加事件,例如 .ClickedCancel += 和 .ClickedOK +=。
【问题讨论】:
-
TBH,您应该使用 MVVM,这个问题可能不是问题。
标签: c# xamarin.forms timepicker