在点击的文本框上实现 DatePicker / DatePickerFlyout

Implementing DatePicker / DatePickerFlyout on TextBox Tapped

我正在开发 Windows 10 通用应用程序,我对如何在文本框点击时实现 DatePicker 感到困惑。只要我点击文本框,我就希望日期选择器显示出来。 我尝试了 Tapped 和 OnFocus 事件并使用 C# 调用 datepicker,但这没有帮助。 他们还有其他实现方式吗?

背景

实际 UI 控件中的 UWP 中的 CalendarDatePicker。这意味着它有自己的事件、UI 和使用方法。

这意味着如果我像这样向 UI 添加一个简单的 CalendarDatePicker:

        var picker = new CalendarDatePicker();
        mainGrid.Children.Add(picker);

我会生成这样的控件:

如果我按下 "select a date" 按钮:

我的建议是改用它,因为他们已经解决了很多问题并为您创造了一切。但是,如果您真的想使用自己的 TextBox,没有什么可以阻止您这样做。就是比较麻烦

解决初始问题

这是一个用于在您聚焦文本框时显示日历视图的选项:

    private void CalendarDatePicker_DateChanged(CalendarDatePicker sender, CalendarDatePickerDateChangedEventArgs args)
    {
        calendar.IsCalendarOpen = false;
        textBox.Text = args.NewDate?.DateTime.ToString("dd/MM/yyyy");
    }

    private void textBox_GotFocus(object sender, RoutedEventArgs e)
    {
        calendar.IsCalendarOpen = true;
    }

和对应的XAML:

    <TextBox x:Name="textBox" PlaceholderText="Press me!" Tapped="Btn_Tapped" GotFocus="textBox_GotFocus" Height="100" />
    <CalendarDatePicker x:Name="calendar" Width="0" Height="0" DateChanged="CalendarDatePicker_DateChanged" />

PS。诀窍是将 CalendarDatePicker 的高度和宽度设置为零,这会使实际按钮不可见,但在设置 IsCalendarOpen = true

时仍然让日历弹出按钮可见

希望对您有所帮助。很想听到关于答案的反馈或批评:)

祝你有美好的一天!