首页 > 解决方案 > 如何在 UWP 中加载 ComboBox?

问题描述

ComboBox在 XAML 中有以下内容:

<ComboBox Header="Cities" Width="245" SelectedItem="{Binding Cities, Mode=TwoWay}"/>

我需要用一个列表填充它ViewModel

public List<City> Cities = new List<City>();

该列表由在 API 中运行的查询填充:

public async void CargarCiudades()
{
   var List = await App.Repository.City.GetAsync();
   foreach (var i in List)
   {
        this.Cities.Add(i);
   }
}

我需要使用 Cities 列表的内容加载 ComboBox。我该怎么做?

标签: c#xamlcomboboxuwp

解决方案


使用x:Bind以获得更好的性能而不是Binding您不需要两种方式绑定来从后端填充数据,而不是绑定到 SelectedItem 只需使用ItemsSource还确保使用ObservableCollection而不是List这有助于在添加项目时自动更新 UI或从您的后端列表中删除。

<ComboBox Header="Cities" Width="245" ItemsSource="{x:Bind vm.Cities}"/>

在上面的代码中,我假设vm是您页面后端代码(yourPage.xaml.cs)中的类型属性(您的视图模型)

视图模型

public ObservableCollection<City> Cities = new ObservableCollection<City>();

public async void CargarCiudades()
{
   var list = await App.Repository.City.GetAsync();
   foreach (var i in list)
   {
        this.Cities.Add(i);
   }
}

推荐阅读