在输入控件中输入输入时,Xamarin Forms Picker控件将打开

时间:2018-11-08 15:25:48

标签: c# xamarin.forms

为重现该问题,我在内容页面上添加了2个控件:Picker and Entry。容器是一个TableView部分。

如果我单击Entry控件,导致键盘打开或在其中输入字符,则Picker选择项将打开。每当我输入一个字符或删除一个字符时,它就会打开(因此当值更改时)。

如果主容器不是TableView,而是例如StackLayout,那么我就没有这个问题。

自Xamarin Forms v3.3起,我遇到了这个问题。在3.2之前的版本中,此问题不存在。该问题在3.4 beta中也存在。

此外:该问题仅发生在Android(版本4-9)中。不在iOS中。

下面您会找到我的代码:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:PickerBugXF33"
         x:Class="PickerBugXF33.MainPage">

    <StackLayout>
    <TableView x:Name="testTableView" Intent="Form" HasUnevenRows="true" />
    </StackLayout>

</ContentPage>

后面的代码:

using Xamarin.Forms;

namespace PickerBugXF33
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();

            testTableView.Root = new TableRoot();

            var section = new TableSection("Test section");
            testTableView.Root.Add(section);

            var viewCell = new ViewCell();
            section.Add(viewCell);

            var stack = new StackLayout() { Orientation = StackOrientation.Vertical };
            viewCell.View = stack;

            var picker = new Picker();
            picker.Items.Add("Test item in picker");

            stack.Children.Add(picker);

            var entry = new Entry();

            stack.Children.Add(entry);

        }
    } 
}

NB:这是一个测试项目。实际的实时项目要大得多,其中必须通过代码创建页面。

更新1,11/9/2018:可以通过提交https://github.com/xamarin/Xamarin.Forms/pull/4344/commits/8401d81745ad248b5b70aa669863c8b8c8753e66

解决

0 个答案:

没有答案