【问题标题】:Datepicker does not triggers on default date selection in xamarin.forms - AndroidDatepicker 不会触发 xamarin.forms 中的默认日期选择 - Android
【发布时间】:2015-01-01 12:01:19
【问题描述】:

在 xamarin.Forms 中使用 DatePicker 时,我很难知道用户是否实际选择了默认日期,或者 datepicker 只显示我给出的默认日期。由于 datepickerDateSelected 事件仅在 datepicker 字段发生变化时触发,所以我想仅在用户实际选择日期时从 datepicker 获取日期。

我怎样才能实现它?如果问题没有得到适当的简报,请发表评论..

【问题讨论】:

    标签: c# datepicker xamarin xamarin.android xamarin.forms


    【解决方案1】:

    Xamarin.Forms DatePicker.Date 属性可以设置为特定日期,也可以单独设置并使用当前日期填充。

    DatePicker中没有公开no属性来判断用户是否选择日期。

    为了跟踪用户是否选择了日期,您必须自己在 DateSelected eventhandler 中进行跟踪,方法是设置一些其他变量,然后您可以查询稍后确定这是否是用户选择的日期。例如:-

    objDatePicker.DateSelected+=((o2,e2)=>
    {
    blnIsUserSelectedANewDateThanDefault = true;
    });
    

    注意 - 但是,如果用户打开 DatePicker,并选择 same 如图所示的日期,这将不会触发 DateSelected eventhandler,因为值没有改变。

    更新 1:-

    无法使用 Xamarin.Forms DatePicker 控件 (v1.2.3x) 显示 Cancel 按钮单击.

    但是,您可以创建一个自定义渲染器来实现您想要做的事情。

    如果你沿着这条路走,你可以钩住 Android DatePickerDialog 上暴露的 Cancel 按钮点击显示。

    一旦在您的自定义渲染器中检测到该事件,您就可以设置标志引发事件以指示用户取消了日期选择。

    【讨论】:

    • 您的问题中提到了很多东西。重读几次后,我可以确定这是相关的。您所要求的细节可以通过自定义渲染器来实现。你能告诉我们更多关于你想要使用这个场景的信息吗?您是否理想地希望日期选择器有效地未被选中,直到他们选择它?,因为它目前总是显示一个值?我只是想了解为什么您需要知道用户是否选择了已显示的相同日期?
    • 场景类似于员工注册。用户必须输入强制值,例如 nameemailid加入日期。由于用户选择当前日期的可能性很高,这是默认的并且不会触发 DateSelected,我需要验证用户是否输入了所有必填字段或跳过而不选择日期字段。现在我使用焦点事件处理程序来检查用户是否实际选择了日期,这也有一个缺陷,即用户关注日期选择器并选择单击取消我会将默认日期保存为用户输入的值。
    • 您能否展示如何在自定义渲染器中检索取消按钮单击?我没有找到合适的覆盖方法。 DatePickerRenderer 中没有 onClick
    【解决方案2】:

    这是我目前的发现:

    安卓:

    SelectedDateChanged = 仅在日期实际更改时触发。触发完成并取消

    SelectedDate = 将属性设置为完成并取消 unfocused= 在完成和取消时触发

    iOS:

    selecteddatechanged= 每次更改日期时触发,无论是否完成和取消

    SelectedDate= 将属性设置为完成并取消 unfocused = 完成并取消触发 对我来说,这使得控件在我的项目中几乎无法使用。我应该如何确定用户是否点击完成或只是单击背景以取消操作?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 2018-05-08
      • 2014-01-08
      • 1970-01-01
      • 2021-02-13
      • 2021-03-14
      • 2018-04-08
      相关资源
      最近更新 更多