在点击的文本框上实现 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
时仍然让日历弹出按钮可见
希望对您有所帮助。很想听到关于答案的反馈或批评:)
祝你有美好的一天!
我正在开发 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
希望对您有所帮助。很想听到关于答案的反馈或批评:)
祝你有美好的一天!