我已经搜索了一段时间的答案,但似乎没有一个完全符合我的问题。
我有一个窗口,我在其中创建了ComboBox
。然后在我的代码中,我创建了一个数组:
public string[] myList = new[] { "Item 1", "Item 2" };
现在我想在ComboBox
下拉列表中选择这些项目。我发现的大多数内容建议使用DataSource
和DataBind
,但实际上只有DataContext
可用。
我确信之前有一些步骤我不知道了,但我还是很新,所以我不确定它是什么。
答案 0 :(得分:3)
您找到的答案是针对Winforms的,您似乎正在使用WPF。它们都具有ComboBox
控件,但它们实际上是具有不同属性的完全不同的控件。试试这个(假设你称之为ComboBox1
):
ComboBox1.ItemsSource = myList;
但是,您通常需要商品的ID,以便在用户选择商品时使用它们。为此,您需要将ComboBox
绑定到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>
答案 1 :(得分:0)
尝试将ID映射到字符串列表的每个成员。它会起作用。