2012-10-14 93 views
0

所以我有這個數組把二維數組列表框中

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

,並希望把一切都在一個列表框,我想這會工作,但不會:/

lstBoxMarket.Items.AddRange(cars); 

現在我怎麼把所有的東西放在列表框中的格式爲

汽車 - 價格?

+0

你的代碼不能得到遵守,zagged陣列應使用 –

+0

HTTP:/ /stackoverflow.com/questions/794163/adding-custom-class-objects-to-listbox-in-c-sharp –

回答

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行。

+0

真棒,它的工作原理,謝謝! – vlovystack

+0

很高興幫助!不要忘記回來接受這個答案。 –

1

USE DataSource屬性載入多維數組的數據。

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

的更好的方法是到的ItemsSource綁定到一個新的類的一個ObservableCollection的數據模型車類型

您的看法

的.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

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 } 
}; 
+0

+1一個很好的答案。但是,通過轉換器(或使用StringFormat)或單視圖模型屬性綁定到模型的單個「TextBlock」可能會更好,因此最終結果在邏輯上不是三個單獨的文本塊。例如,三個單獨的文本塊將被屏幕閱讀器讀爲三個獨立的字符串。 –