早上好,我有一个DateTimePicker的下面的代码,我想当我按下按钮,日期显示在标签(结果)中,你能帮我吗?
DateTimePicker works继承了xamarin ContentView,而不仅仅是条目xamarin,然后创建Stacklayout,xamarin将条目以及日期和时间添加到内容中。
public class DateTimePicker2 : ContentView, INotifyPropertyChanged
{
public Entry Fecha { get; private set; } = new Entry() { TextColor = Color.Black, HorizontalTextAlignment=TextAlignment.Center };
public DatePicker DatePicker { get; private set; } = new DatePicker() { MaximumDate = DateTime.Today, IsVisible = false };
public TimePicker TimePicker { get; private set; } = new TimePicker() { IsVisible = false };
string stringFormat { get; set; }
public string StringFormat { get { return stringFormat ?? "dd/MM/yyyy HH:mm"; } set { stringFormat = value; } }
public DateTime DateTimed
{
get { return (DateTime)GetValue(DateTimeProperty); }
set { SetValue(DateTimeProperty, value); OnPropertyChanged("DateTime"); }
}
private TimeSpan Time
{
get
{
return TimeSpan.FromTicks(DateTimed.Ticks);
}
set
{
DateTimed = new DateTime(DateTimed.Date.Ticks).AddTicks(value.Ticks);
}
}
private DateTime date
{
get
{
return DateTimed.Date;
}
set
{
DateTimed = new DateTime(DateTimed.TimeOfDay.Ticks).AddTicks(value.Ticks);
}
}
BindableProperty DateTimeProperty = BindableProperty.Create("DateTime", typeof(DateTime), typeof(DateTimePicker2), DateTime.Now, BindingMode.TwoWay, propertyChanged: DTPropertyChanged);
public DateTimePicker2()
{
BindingContext = this;
Content = new StackLayout()
{
Children =
{
DatePicker,
TimePicker,
Fecha
}
};
TimePicker.Unfocused += (sender, args) => Time = TimePicker.Time;
DatePicker.Focused += (s, a) => UpdateEntryText();
GestureRecognizers.Add(new TapGestureRecognizer() { Command = new Command(() => DatePicker.Focus()) });
Fecha.Focused += (sender, args) => { Device.BeginInvokeOnMainThread(() => DatePicker.Focus()); };
DatePicker.Unfocused += (sender, args) => { Device.BeginInvokeOnMainThread(() => { TimePicker.Focus(); date = DatePicker.Date; UpdateEntryText();}); };
}
private void UpdateEntryText()
{
Fecha.Text = DateTimed.ToString(StringFormat);
}
static void DTPropertyChanged(BindableObject bindable, object oldValue, object newValue)
{
var timePicker = (bindable as DateTimePicker2);
timePicker.UpdateEntryText();
}
}在Xaml中,它是这样使用的
<local:DateTimePicker2 ></local:DateTimePicker2>
<Button Clicked="Button_Clicked"> </Button>
<Label x:Name="result"></Label>发布于 2022-08-18 12:31:34
将名称分配给您的控件
<local:DateTimePicker2 x:Name="dt2" />
<Button Clicked="Button_Clicked" />
<Label x:Name="result" />然后在你的处理程序中
protected void Button_Clicked(object sender, EventArgs e)
{
result.Text = dt2.Datetimed.ToString();
}https://stackoverflow.com/questions/73400351
复制相似问题