在列表上单击时,选择Uwp ComboboxItem

时间:2018-08-23 01:56:36

标签: c# xaml combobox uwp selecteditem

我在XAML中有一个带有2个项目组合框的表单:

<ComboBox x:Name="cb_Category" PlaceholderText="Category" HorizontalAlignment="Left" Height="40" Margin="20,88,0,0" VerticalAlignment="Top" Width="437" SelectionChanged="cb_Categoria_SelectionChanged">
<ComboBoxItem Content="Products"/>
<ComboBoxItem Content="Services"/>
</ComboBox>

我将组合框选择的项目转换为字符串,以便可以将其添加到我的数据库并显示在列表中。

    private void cb_Category_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (cb_Category.SelectedItem != null)
        {
            var combo = (ComboBox)sender;
            var item = (ComboBoxItem)combo.SelectedItem;
            content = item.Content.ToString();
        }
    }

现在,我要做的就是在列表中选择一个项目时,组合框会选择并显示相同的项目。但是我不知道怎么办?

App Sample

如您所见,当我单击“网格项目”时,我获得了文本框中除组合框之外的所有值

1 个答案:

答案 0 :(得分:0)

要将“列表”项设置为组合框,您需要设置ItemsSource属性,如下所示:

cb_Category.ItemsSource = yourList;

根据更新后的帖子进行编辑

一旦加载了数据,就可以在列表SelectionChanged上执行以下操作:

cb_Category.SelectedIndex = cb_Category.Items.IndexOf(myListView.SelectedItem);

如果您的List和ComboBox没有共享相同的数据结构,则可以执行以下操作:

您的列表数据结构:

Public Class MyList
{
  public int Property1 {get;set;}
  public int Property2 {get;set;}
  public string Property3 {get;set;} //Property mapped for ComboBox
  public int Property4 {get;set;}
}

您的ComoboBox数据结构:

Public Class MyComboBox
{
  public int Property1 {get;set;}
  public string Property2 {get;set;} //Property that needs to be display in ComboBox
}

比在列表SelectionChanged上先在ComboBox中找到该项目,然后将其设置为“ SelectedIndex”

var selectedItem = myComboBoxDataSource.where(x=>x.Property2.Equals(((MyList)myListView.SelectedItem).Property3));
cb_Category.SelectedIndex = cb_Category.Items.IndexOf(selectedItem);