gpt4 book ai didi

数组中的 C# ComboBox 项

转载 作者:太空宇宙 更新时间:2023-11-03 20:57:39 25 4
gpt4 key购买 nike

我已经搜索了一段时间的答案,但似乎没有一个与我的问题完全匹配。

我有一个窗口,我在其中创建了一个 ComboBox。然后在我的代码中,我创建了一个数组:

public string[] myList = new[] { "Item 1", "Item 2" };

现在我想让这些项目成为 ComboBox 下拉列表中的选项。我发现的大部分内容都建议使用 DataSourceDataBind,但实际上只有 DataContext 可用。

我确定我之前遗漏了一些步骤,但我对此还是很陌生,所以我不确定它是什么。

最佳答案

您找到的那些答案是针对 Winforms 的,您似乎正在使用 WPF。它们都有一个ComboBox控件,但它们实际上是具有不同属性的完全不同的控件。试试这个(假设您称它为 ComboBox1):

ComboBox1.ItemsSource = myList;

但是,您通常需要商品的 ID,以便在用户选择商品时使用它们。为此,您需要将 ComboBox 绑定(bind)到 Dictionary 而不是 List,如下所示:

var data = new Dictionary<int, string>{
{100, "Eggplant"},
{102, "Onion"},
{300, "Potato"},
{105, "Tomato"},
{200, "Zuccini"}
};
ComboBox1.ItemsSource = data;
ComboBox1.DisplayMemberPath = "Value";
ComboBox1.SelectedValuePath = "Key";

现在,当用户选择“洋葱”时,您将通过以下方式获得 102:

int selected = (int)ComboBox1.SelectedValue;

注意:XAML 中的 ComboBox1 不能有任何项目,否则会出错。

如果您更喜欢将项目保留在 XAML 而不是代码隐藏中,则没有与 SelectedValuePath 属性等效的属性,但您可以使用 Tag 属性模拟它像这样:

<ComboBox x:Name="ComboBox1" SelectedValuePath="Tag">
<ComboBoxItem Content="Eggplant" Tag="100" />
<ComboBoxItem Content="Onion" Tag="102" />
<ComboBoxItem Content="Potato" Tag="300" />
<ComboBoxItem Content="Tomato" Tag="105" />
<ComboBoxItem Content="Zuccini" Tag="200" />
</ComboBox>

关于数组中的 C# ComboBox 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48793154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com