2011-10-15 204 views
1

裏面我有一個簡單的類是這樣的:列表框列表框的另一個

public class myClass 
{ 
    public List<string> innerList; 
    public string innerString{get;set;} 
} 

然後,我有這個類的一個對象的List:列出< MyClass的>。對於該列表中的示例中,內容是

myList = new List<myClass>{ 
    new myClass{ 
     innerList = new List<string>{ 
      "1", "2", "3", "4" 
     }, 
     innerString = "First String" 
    }, 
    new myClass{ 
     innerList = new List<string>{ 
      "a", "b", "c", "d" 
     }, 
     innerString = "Second String" 
    } 
}; 

我想顯示在下面的表格此數組上下文:

First String 
    1 2 3 

Second String 
    a b c 

注意:實際上我不能連接1 + 2 + 3且a + b + C因爲我有什麼是不是字符串數組而是一個BitmapImage的數組(這就是爲什麼我認爲我需要另一個列表框此)

所以,我想我應該讓另一個列表框內部的列表框。但是可能有更好的方法來做到這一點。

這裏我not_working XAML代碼:

<ListBox x:Name="myListBox" ItemsSource="{Binding ''}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding innerString}"/> 
       <ListBox x:Name="innerListBox" ItemsSource="{Binding innerList}"> 
        <ListBox.ItemTemplate> 
         <DataTemplate> 
          <TextBox Text="{Binding ''}"/> 
         </DataTemplate> 
        </ListBox.ItemTemplate> 
       </ListBox> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

它顯示只有 「第一字符串」 和 「第二字符串」,而不是 「1 2 3」 和 「A B C」。

我該怎麼做才能在另一個數組內顯示數組內容?

回答

2

如果您刪除內部列表的列表項模板,那麼xaml應該可以正常工作。

如果你不提供一個ItemTemplate,那麼默認列表項時,它只是調用DataContext,在這種情況下是string

一件事要注意的ToString()方法是,如果你希望您的列表動態更新,您應該使用ObservableCollection<string>而不是List<string>ObservableCollection implements INotifyCollectionChanged,它告訴用戶界面添加或刪除一個項目。

+0

首先,感謝您通知'ObservableCollection'。非常有用的提示。並且我意識到我的錯誤在哪裏:我忘記了將{get; set;}方法設置到myClass中的List中。你對這個XAML應該有效的評論讓我思考並且重新檢查我的cs代碼)謝謝 – bulbform

+0

很高興能夠提供服務 –

相關問題