【问题标题】:ComboBox Selected Value - value that matches stringComboBox Selected Value - 匹配字符串的值
【发布时间】:2018-08-20 17:18:41
【问题描述】:

如何以编程方式在 C# UWP 中设置 ComboBox 的 SelectedValue 或 SelectedItem? 我有一个绑定到字符串列表的 ComboBox,我希望它自动选择与其他列表中的字符串匹配的字符串。

ObservableCollection<Products> DB_Products = new ObservableCollection<Products>();
ReadAllProductsList dbproducts = new ReadAllProductsList();
DB_Products = dbproducts.GetAllProducts();
List<Products> productsList = new List<Products>();
productsList = DB_Products.ToList();

以下未知

ComboBox1.SelectedItem = productList[0].ProductName.ToString() ;

或类似的东西:

ComboBox1.SelectedItem = ComboBox.SelectedItem.Where(ComboBox => ComboBox.SelectedItem == productList[0].ProductName.ToString());

或:

ComboBox1.SelectedItem = DB_SelectorList.Where(DB_SelectorList => DB_SelectorList.ProductName == productList[0].ProductName.ToString());

【问题讨论】:

  • 好的,拉斯。感谢您的建议。e

标签: c# combobox uwp selecteditem selectedvalue


【解决方案1】:

这完全取决于您与ComboBox 控件一起使用的实际ItemsSource

如果您设置ComboBox1.ItemsSource = productsList;,每个项目的类型为Products(我建议将其重命名为Product,因为实例代表一个产品,而不是多个产品,这会造成混淆)并且您必须设置SelectedItem到您要选择的产品:

ComboBox1.SelectedItem = productsList[2]; //select the third item

你也可以设置应该选择的索引:

ComboBox1.SelectedIndex = 2; //select the third item

为什么你的方法不起作用

第一种方法

ComboBox1.SelectedItem = productList[0].ProductName.ToString();

在这里,您将SelectedItem 设置为ProductName,这是Products 项目的属性,但ComboBox 绑定到Products 列表,它不会比较各个属性。

第二种和第三种方法

ComboBox1.SelectedItem = ComboBox.SelectedItem.Where(
  ComboBox => ComboBox.SelectedItem == productList[0].ProductName.ToString());
//and
ComboBox1.SelectedItem = DB_SelectorList.Where(
  DB_SelectorList => DB_SelectorList.ProductName == productList[0].ProductName.ToString());

这两个更接近,但还不是完整的解决方案。 Where 方法是一种 LINQ 扩展方法,在这种情况下返回 IEnumerable&lt;T&gt; IEnumerable&lt;Products&gt;。原因是Where 可能会返回多个结果。如果您想完成这项工作,则必须在分号前附加 .FirstOrDefault() 以仅获取第一个结果。无论如何,您的目标是将SelectedItem 属性设置为单个“Products”的实例(同样,名称最好是Product :-))

您可以使用的解决方案是:

SelectedItem = listBoundToComboBox.FirstOrDefault( p => some condition );

【讨论】:

  • 我无法应用您的解决方案,因为我需要从 ProductList 中选择 Product,其中 Product 与其他列表的 Product 匹配。我无法设置选择,因为我不知道必须进行哪个选择。这就是为什么我需要以某种方式将组合框的 sourceItems 与另一个列表的 Product.ProductName 进行比较。正如您可能已经理解的那样,ComboBox 未与 Product 绑定。这是两个列表。我需要比较它们的元素以确定做出了哪些选择。
  • 那么ComboBox.ItemsSource 是如何绑定的?
  • 它通过类绑定到产品列表。并且选择必须与另一个类中的第一个 Product.ProductName 匹配。
  • 这是两个不同的类和两个不同的列表。但他们有共同的产品。
  • 但是ComboBox 列表源中的项目的类型是什么? Product?这些实例是相同的引用吗?在任何情况下,您都可以使用SelectedItem = listBoundToComboBox.FirstOrDefault( p =&gt; some condition ) 选择ComboBox
猜你喜欢
  • 2016-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多