在 xamarin.forms 中打开日期选择器日历而不显示编辑文本框
Open the datepicker calendar without showing the edittextbox in xamarin.forms
我在我的 app.I 中使用 DatePicker
控制 Xamarin.Forms
有一个按钮,我想打开一个弹出窗口,我想在其中显示 [=11= 的日历].但是目前,当我打开弹出窗口时, edittexbox
显示当前日期,当我点击文本框时,日历会打开。但我不想要编辑文本框。我只想在用户点击按钮时显示日历。
有人知道我该怎么做吗?
通过设置 IsVisible=false
隐藏 DatePicker 控件。然后您可以通过从代码中的其他地方调用 Focus()
方法以编程方式触发它。
检查这个:
DatePicker datePicker = new DatePicker
{
Format = "D",
VerticalOptions = LayoutOptions.CenterAndExpand,
IsVisible =false,
IsEnabled = false
};
Button button = new Button
{
Text = "Date",
VerticalOptions = LayoutOptions.CenterAndExpand
};
button.Clicked += (object sender, EventArgs e) =>
{
IsEnabled = true;
datePicker.Focus();
button.Text = datePicker.Date.ToString();
};
参考:
https://developer.xamarin.com/api/type/Xamarin.Forms.DatePicker/
Jason 的答案略有改进。将 DatePicker 上的 IsVisible
设置为 false,然后将其设置为 Focus()
确实有效,但是,您可能会发现,当您单击“取消”时,焦点仍停留在 DatePicker 上。如果 DatePicker 已经有焦点,它不会再次显示日期选择器对话框。下面是无论用户如何与对话框交互都始终有效的代码:
DatePickerTapRecogniser.Tapped += (object sender,
EventArgs e) => {
Device.BeginInvokeOnMainThread (() => {
if (DatePickerComponent.IsFocused) {
DatePickerComponent.Unfocus ();
}
DatePickerComponent.Focus ();
});
};
我在我的 app.I 中使用 DatePicker
控制 Xamarin.Forms
有一个按钮,我想打开一个弹出窗口,我想在其中显示 [=11= 的日历].但是目前,当我打开弹出窗口时, edittexbox
显示当前日期,当我点击文本框时,日历会打开。但我不想要编辑文本框。我只想在用户点击按钮时显示日历。
有人知道我该怎么做吗?
通过设置 IsVisible=false
隐藏 DatePicker 控件。然后您可以通过从代码中的其他地方调用 Focus()
方法以编程方式触发它。
检查这个:
DatePicker datePicker = new DatePicker
{
Format = "D",
VerticalOptions = LayoutOptions.CenterAndExpand,
IsVisible =false,
IsEnabled = false
};
Button button = new Button
{
Text = "Date",
VerticalOptions = LayoutOptions.CenterAndExpand
};
button.Clicked += (object sender, EventArgs e) =>
{
IsEnabled = true;
datePicker.Focus();
button.Text = datePicker.Date.ToString();
};
参考: https://developer.xamarin.com/api/type/Xamarin.Forms.DatePicker/
Jason 的答案略有改进。将 DatePicker 上的 IsVisible
设置为 false,然后将其设置为 Focus()
确实有效,但是,您可能会发现,当您单击“取消”时,焦点仍停留在 DatePicker 上。如果 DatePicker 已经有焦点,它不会再次显示日期选择器对话框。下面是无论用户如何与对话框交互都始终有效的代码:
DatePickerTapRecogniser.Tapped += (object sender,
EventArgs e) => {
Device.BeginInvokeOnMainThread (() => {
if (DatePickerComponent.IsFocused) {
DatePickerComponent.Unfocus ();
}
DatePickerComponent.Focus ();
});
};