打开日期选择器日历,而不显示xamarin.forms中的edittextbox

时间:2015-12-07 08:29:00

标签: xaml datepicker calendar xamarin.forms

我在我的应用中使用DatePicker Xamarin.Forms控件。我有一个按钮,我想打开一个弹出窗口,我想在其中显示DatePicker的日历。但是,当我打开弹出窗口时,edittexbox显示当前日期,当我点击文本框时,日历会打开。但我不想要编辑texbox。我只想在用户点击按钮时显示日历 有谁知道我怎么能这样做?

3 个答案:

答案 0 :(得分:4)

通过设置IsVisible=false隐藏DatePicker控件。然后,您可以通过从代码中的其他位置调用Focus()方法以编程方式触发它。

答案 1 :(得分:1)

检查一下:

        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/

答案 2 :(得分:1)

对杰森的回答略有改进。将DatePicker上的public static String S3putFile(File file, String bucketName, String key, CannedAccessControlList accessControlList) throws IOException { if(file == null) { throw new NullPointerException("file must not be null"); } else if(bucketName == null || key == null) { throw new NullPointerException("Object parameters (bucketName / key) must not be null"); } else { PutObjectRequest putObjectRequest = new PutObjectRequest(s3Bucket, key, file); //putObjectRequest.withCannedAcl(accessControlList.AuthenticatedRead); putObjectRequest.withCannedAcl(accessControlList); amazonS3.putObject(putObjectRequest); return key; } } 设置为false然后将其设置为IsVisible确实有效,但是,您可能会发现当您单击取消时,焦点仍然在DatePicker上。如果DatePicker已经具有焦点,则不会再次显示日期选择器对话框。无论用户如何与对话框交互,以下代码始终有效:

Focus()