2015-12-07 11 views
6

Tôi đang sử dụng kiểm soát DatePicker của xamarin.forms trong ứng dụng của tôi. Tôi có một nút và tôi muốn mở một cửa sổ bật lên mà tôi muốn hiển thị calednar của datepicker. Nhưng hiện tại khi tôi mở cửa sổ bật lên, hộp thoại edittexbox hiển thị cùng với ngày hiện tại và khi tôi nhấn vào hộp văn bản thì lịch sẽ mở ra. Nhưng tôi không muốn chỉnh sửa texbox. Tôi chỉ muốn hiển thị lịch khi người dùng nhấn vào nút. Bất cứ ai cũng biết làm thế nào tôi có thể làm điều này?Mở lịch datepicker mà không hiển thị edittextbox trong xamarin.forms

Kính trọng, Anand Dubey

Trả lời

4

Hãy điều khiển DatePicker ẩn bằng cách thiết lập IsVisible=false. Sau đó, bạn có thể kích hoạt nó theo chương trình bằng cách gọi phương thức Focus() từ những nơi khác trong mã của bạn.

+0

Cảm ơn rất nhiều Jason, Công việc của nó hoàn hảo. Nhưng tôi có một vấn đề với điều đó. Tôi không thể xử lý nút Hủy của DatePicker trong Android. Tôi đang cố gắng tạo trình kết xuất tùy chỉnh cho datepicker. Nhưng không biết cách truy cập vào sự kiện hủy trong đó. Bạn có bất kỳ ý tưởng về điều này? – anand

1

Kiểm tra này:

 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(); 
     }; 

Tham khảo: https://developer.xamarin.com/api/type/Xamarin.Forms.DatePicker/

1

Một cải thiện chút ít câu trả lời về câu trả lời của Jason. Đặt IsVisible trên DatePicker thành false và sau đó đặt thành Focus() không hoạt động, tuy nhiên, bạn có thể thấy rằng khi bạn nhấp vào Hủy, tiêu điểm vẫn còn trên DatePicker. Nếu DatePicker đã có tiêu điểm, nó sẽ không hiển thị hộp thoại bộ chọn ngày nữa. Dưới đây là mã sẽ luôn hoạt động bất kể cách người dùng tương tác với hộp thoại:

 DatePickerTapRecogniser.Tapped += (object sender, 
              EventArgs e) => { 
      Device.BeginInvokeOnMainThread (() => { 
       if (DatePickerComponent.IsFocused) { 
        DatePickerComponent.Unfocus(); 
       } 
       DatePickerComponent.Focus(); 
      }); 
     }; 
Các vấn đề liên quan