如何在Xamarin Forms中使用ComboBox

11

如何在Xamarin Forms中使用ComboBox,因为Xamarin Forms没有ComboBox控件,在我的应用程序中,我想显示国家列表,以便用户可以按照搜索和下拉列表两种方式选择国家,请给我解决此问题的建议。

注意:我找到了一个解决方案,即Syncfusion组合框,但那是付费服务,我不想使用付费服务。


你是否在寻找类似于 https://www.syncfusion.com/xamarin-ui-controls/combobox 的东西?如果是的话,你可以使用 XLabs AutoCompleteView https://github.com/XLabs/Xamarin-Forms-Labs/blob/master/src/Forms/XLabs.Forms/Controls/AutoCompleteView.cs - FreakyAli
我正在处理(XLabs)这个问题,如果有疑问我会告诉你。 - P.Thiyagu
请注意,XLabs已被弃用并且已经很长时间没有得到维护。我建议寻找替代方案。 - Gerald Versluis
@GeraldVersluis 我同意它已经过时了,但我相信任何过时的东西都可以轻松转换为新版本,如果我错了,请纠正我,先生! - FreakyAli
5个回答

11

Xamarin Forms 包含一个组合框控件,只是它不被称为组合框。XF 称其为Picker。使用起来非常简单,并包括可绑定的属性 ItemSource 和 SelectedItem/SelectedIndex。


在我的Xamarin项目中,Picker未被识别为一个类,这是我需要使用的库吗?我可以引用所有UI元素,如ListView、ImageView、CheckBox,但不包括该元素。 - Windgate

5
你可以使用Xamarin中的Picker控件在一个框中列出一些对象。我建议你遵循MVVM模式来绑定数据源并处理事件。微软提供了代码示例。 但基本上,你需要在XAML中添加一个Picker
<StackLayout Margin="20">
        <Label Text="Bindable Picker Demo" FontAttributes="Bold" HorizontalOptions="Center" />
        <Picker Title="Select a country" ItemsSource="{Binding CountryList}" SelectedItem="{Binding SelectedColorName, Mode=TwoWay}" />
        
    </StackLayout>

在您的模型中,只需设置Countrylist属性并选择它即可。
public IList<string> CountryList
    {
        get
        {
            return new List<string> {"USA","Germany","England"};
        }
    }

如果您想在您的Picker中进行搜索,您需要创建自己的控件。根据您的要求,一个Entry和一个Listview可能就足够了。您需要在Entry的事件中更新列表。

1
你可以使用ItemsSource作为国家列表创建自己的ListView,并使用TextChanged方法创建SearchView,在其中通过搜索值更改你的ItemsSource(首先,由于空的搜索过滤器,ItemsSource将为空)。
另外,你可以查看此链接,这也可能会有用。
更新:
如果需要可搜索的Picker,有一个github项目可供使用。它具有搜索功能。项目链接

在使用 Visual Studio 2017 开发 Xamarin Forms 应用时,能否实现 ComboBox? - P.Thiyagu
@P.Thiyagu,我已经更新了我的回答,找到了一个适合你的项目。 - Денис Чорный
谢谢大家,我将使用Xfx控件。 - P.Thiyagu
@P.Thiyagu 没关系!您可以点赞并选择采纳来向其他用户展示哪个答案是正确的。 - Денис Чорный

0

使用选择器控件可以方便地创建组合框

步骤1:.xaml文件中遵循布局控件的第一个标准

<StackLayout>
    
    <Picker Title="Placeholder" BackgroundColor="Red" x:Name="liname"></Picker>
    
</StackLayout>

步骤2:现在在.xaml.cs文件中添加值。

    public yourcode()
    {
        InitializeComponent();
        liname.Items.Add("class1");
        liname.Items.Add("class2");
        liname.Items.Add("class3");
        liname.Items.Add("class4");

    }

现在在 Vs 中启动模拟器,在我的代码下方查看输出屏幕


0
我有一个解决方案,伙计们。我正在使用选择器而不是组合框,在Xamarin Forms中没有组合框选项,如果你想要精确的组合框,需要订阅Syncfusion。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接