【问题标题】:How to load a ComboBox in UWP?如何在 UWP 中加载 ComboBox?
【发布时间】:2019-02-15 01:22:44
【问题描述】:

我在 XAML 中有以下 ComboBox

<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# xaml combobox uwp


【解决方案1】:

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

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

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

视图模型

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

【讨论】:

    【解决方案2】:

    ComboBox 在绑定到 List 后不知道新项目已添加。

    如果您将 Cities 集合更改为 ObservableCollection,它将按预期工作。

    【讨论】:

      猜你喜欢
      • 2016-10-30
      • 1970-01-01
      • 1970-01-01
      • 2016-06-17
      • 2021-02-15
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多