我需要知道用户是否点击了Cancel or Ok按钮
在一个日期/时间选择器 of an xamarin.Forms
安卓应用程序。
我尝试向 Click 事件添加一个函数,但这从未被触发。
这是我的代码(类似于 TimePicker):
using Android.Content;
using MyApp.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
using MyApp.Models;
using Java.Util;
[assembly: ExportRenderer(typeof(DatePicker), typeof(DatePickerCustomRenderer))]
namespace MyApp.Droid {
public class DatePickerCustomRenderer : DatePickerRenderer {
public DatePickerCustomRenderer(Context context) : base(context) { }
protected override void OnElementChanged(ElementChangedEventArgs<DatePicker> e) {
base.OnElementChanged(e);
Locale locale = new Locale(Utente.FormatoPerDateTimePicker);
Control.TextLocale = locale;
Control.Click += Control_Click;
}
private void Control_Click(object sender, System.EventArgs e) {
// This function is never called :(
throw new System.NotImplementedException();
}
}
}
我怎样才能做到这一点?
使用以下 Android DatePicker 自定义渲染器,您可以完全控制“确定”和“取消”。
using Android.App;
using Android.Content;
using ???.Android.Renderers;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
using DatePicker = Xamarin.Forms.DatePicker;
[assembly: ExportRenderer(typeof(DatePicker), typeof(FixedDatePickerRenderer))]
namespace ???.Android.Renderers
{
public class FixedDatePickerRenderer : Xamarin.Forms.Platform.Android.DatePickerRenderer
{
public FixedDatePickerRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.DatePicker> e)
{
base.OnElementChanged(e);
//Disposing
if (e.OldElement != null)
{
_element = null;
}
//Creating
if (e.NewElement != null)
{
_element = e.NewElement;
}
}
protected Xamarin.Forms.DatePicker _element;
protected override DatePickerDialog CreateDatePickerDialog(int year, int month, int day)
{
var dialog = new DatePickerDialog(Context, (o, e) =>
{
_element.Date = e.Date;
((IElementController)_element).SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, false);
}, year, month, day);
dialog.SetButton((int)DialogButtonType.Positive, Context.Resources.GetString(global::Android.Resource.String.Ok), OnOk);
dialog.SetButton((int)DialogButtonType.Negative, Context.Resources.GetString(global::Android.Resource.String.Cancel), OnCancel);
return dialog;
}
private void OnCancel(object sender, DialogClickEventArgs e)
{
_element.Unfocus();
//((FixedDatePicker) _element)?.CallOnCancel();
}
private void OnOk(object sender, DialogClickEventArgs e)
{
//need to set date from native control manually now
_element.Date = ((DatePickerDialog)sender).DatePicker.DateTime;
_element.Unfocus();
//((FixedDatePicker)_element)?.CallOnOk();
}
}
}
对于那些寻求完整解决方案以避免搜索 iOS 的人来说,已经包含一个开箱即用的选项:https://learn.microsoft.com/en-us/xamarin/xamarin-forms/platform/ios/datepicker-selection
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)