首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在标签中显示DateTimePicker的结果

如何在标签中显示DateTimePicker的结果
EN

Stack Overflow用户
提问于 2022-08-18 09:10:56
回答 1查看 71关注 0票数 0

早上好,我有一个DateTimePicker的下面的代码,我想当我按下按钮,日期显示在标签(结果)中,你能帮我吗?

DateTimePicker works继承了xamarin ContentView,而不仅仅是条目xamarin,然后创建Stacklayout,xamarin将条目以及日期和时间添加到内容中。

代码语言:javascript
复制
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中,它是这样使用的

代码语言:javascript
复制
         <local:DateTimePicker2    ></local:DateTimePicker2>
         <Button Clicked="Button_Clicked"> </Button>
         <Label x:Name="result"></Label>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-18 12:31:34

将名称分配给您的控件

代码语言:javascript
复制
<local:DateTimePicker2 x:Name="dt2" />
<Button Clicked="Button_Clicked" />
<Label x:Name="result" />

然后在你的处理程序中

代码语言:javascript
复制
protected void Button_Clicked(object sender, EventArgs e)
{
  result.Text = dt2.Datetimed.ToString();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73400351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档