您找到的那些答案是针对 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>