【问题标题】:Calendar Date Picker In Xamarin Forms UWPXamarin 表单 UWP 中的日历日期选择器
【发布时间】:2019-10-06 14:00:24
【问题描述】:

如何在 Xamarin 表单 UWP 应用中创建日历类型日期选择器。

到目前为止,我已经尝试过:

 <Image Grid.Row="3" Grid.Column="1" Source="Images/datePicker.png" WidthRequest="20" HeightRequest="20" Margin="-40,0,40,0" HorizontalOptions="End">
                        <Image.GestureRecognizers>
                            <TapGestureRecognizer Command="{Binding OnSelectDOBCommand}"/>
                        </Image.GestureRecognizers>
                    </Image>

 public void OnSelectDOB(object obj)
    {         
        dateOfBuildDatePicker = UserDialogs.Instance.DatePrompt(new DatePromptConfig { MaximumDate = DateTime.Today, OnAction = (result) => SetDateOfBirth(result), IsCancellable = true });
    }

但这会在屏幕的左上角显示日期选择器控件。 有没有办法自定义它,以便它应该在我单击的字段旁边显示日期选择器,或者是否有任何其他控件可以帮助我实现此功能。(下图是我期望的行为)

感谢任何帮助]1

【问题讨论】:

    标签: xamarin.forms uwp datepicker


    【解决方案1】:

    如果你想在UWP平台上使用特殊控件,可以试试custom renderer

    首先,创建一个自定义控件:

    public class CustomDatePicker : DatePicker
    {
    }
    

    然后在 UWP 上制作自定义渲染器:

    [assembly: ExportRenderer(typeof(CustomDatePicker), typeof(CustomDatePickerRenderer))]
    namespace Demo.UWP
    {
        public class CustomDatePickerRenderer : ViewRenderer<DatePicker, Windows.UI.Xaml.Controls.CalendarDatePicker>
        {
            protected override void OnElementChanged(ElementChangedEventArgs<DatePicker> e)
            {
                base.OnElementChanged(e);
    
                if (Control == null)
                {
                    Windows.UI.Xaml.Controls.CalendarDatePicker datePicker = new Windows.UI.Xaml.Controls.CalendarDatePicker();
                    SetNativeControl(datePicker);
                }
            }
        }
    }
    

    最后,在你的表单项目中使用它:

    <StackLayout>
        <local:CustomDatePicker HorizontalOptions="Start"/>
    </StackLayout>
    

    或者,您可以尝试原生视图:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/native-views/

    【讨论】:

      【解决方案2】:

      即使您选择了数据,日期值也始终设置为当前日期。如何解决?

      【讨论】:

      • 这应该被视为评论,而不是答案
      【解决方案3】:

      更改日期值需要处理日期更改事件。在此处查看我的工作解决方案:

      https://stackoverflow.com/a/60449912/9523062

      【讨论】:

        猜你喜欢
        • 2016-10-24
        • 1970-01-01
        • 1970-01-01
        • 2021-10-29
        • 2021-12-14
        • 1970-01-01
        • 2019-01-26
        • 1970-01-01
        • 2020-04-23
        相关资源
        最近更新 更多