将二维数组放入列表框中

时间:2012-10-14 08:57:26

标签: c# arrays listbox

所以我有这个数组

string[,] cars = new String[2, 2] { 
                { "VW Golf GTI", "30000" }, 
                { "Porsche GT3", "300000" }, 
                { "Porsche Cayenne", "80000" }, 
                { "BMW M6", "90000" } 
            };

并希望将所有内容放入列表框中,我认为这样可行,但事实并非如此:/

lstBoxMarket.Items.AddRange(cars);

现在我如何以格式

将所有内容放入列表框中

车 - 价格?

3 个答案:

答案 0 :(得分:2)

试试这个:

string[,] cars = new string[4, 2] {
    { "VW Golf GTI", "30000" },
    { "Porsche GT3", "300000" },
    { "Porsche Cayenne", "80000" },
    { "BMW M6", "90000" }
};

for (int i = 0; i < cars.GetLength(0); i++)
{
    lstBoxMarket.Items.Add(cars[i, 0] + " - " + cars[i, 1]);
}

您的cars版本当前不会编译,因为您指定了数组初始值设定项的常量(2行2列),但您的数据有4行。

答案 1 :(得分:2)

更好的方法是将ItemsSource绑定到一个新类的ObservableCollection数据模型Car类型

您的观点

<强>的.xaml

<StackPanel>
        <ListBox ItemsSource="{Binding DataCollection}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Name}" />
                    <TextBlock Text=" - "/>
                    <TextBlock Text="{Binding Id}" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
        </ListBox>
</StackPanel>

你的模特 的 Car.cs

public class Car
{
    public string Name { get; set; }
    public int Id { get; set; }
}

您的视图模型将具有将绑定到ItemsSource

的Collection

<强> CarViewModel.cs

public ObservableCollection<Car> DataCollection { get; set; }

DataCollection = new ObservableCollection<Car> 
{ 
    new Car { Name = "VW Golf GTI", Id = 30000 }, 
    new Car { Name = "Porsche GT3", Id = 30000 }, 
    new Car { Name = "Porsche Cayenne", Id = 80000 }, 
    new Car { Name = "BMW M6", Id = 90000 }
};

答案 2 :(得分:1)

USE DataSource属性用于加载多维数组的数据。

listBox1.MultiColumn = true;
    listBox1.DataSource = cars;