2012-05-07 99 views
1

我需要做一個ListView有一列,其中該列是一個ExpanderExpander as ListView項目

特別是我有一個這樣的類:

public class MyItemT 
{ 
    public string Title { get; set; } 
    public TextBlock Info { get; set; } 
} 

而且這些對象的列表:

List<MyItemT> Mylist = new List<MyItemT>(); 

我需要填寫與擴展的對象,其中報頭它與綁定ListView控件標題和帶有Info屬性的內容。

例如擴展的這樣一個ListView:

<Expander Header="My Expander"> 
    <TextBlock TextWrapping="Wrap"> 
     Lorem ipsum dolor sit amet, consectetur 
     adipisicing elit, sed do eiusmod tempor incididunt ut 
     labore et dolore magna aliqua 
    </TextBlock> 
</Expander> 

My Expander

...等(可以看到所有我的ListView的元素)...

ListView不應該有標題欄,當然一切都將以編程方式完成。

應該怎麼做? 謝謝。

回答

2

只需爲ListView定義一個ItemTemplate並在其中放置一個Expander即可。這至少適用於ListView中的其他控件,所以它也應該在這裏工作。

<ListView ItemsSource="{Binding YourSource}" Name="listView"> 
    <ListView.ItemTemplate> 
    <DataTemplate> 
     <Expander Header="{Binding Title}"> 
     <TextBlock TextWrapping="Wrap" Text="{Binding Info}" /> 
     </Expander> 
    </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

該綁定也可以通過這樣的代碼完成。

List<MyItemT> Mylist = new List<MyItemT>(); 
listView.ItemsSource = Mylist; 

你必須改變的一件事是你的信息屬性的類型,它應該是字符串類型。

哦,你的班級應該執行INotifyPropertyChanged,否則綁定不會總是正常工作。

+0

ItemSource不是ListView屬性。有了「YourSource」,你的意思是MyList的MyItemT? – gliderkite

+0

@gliderkite:這就是我在編輯器中編碼所得到的結果。它應該是'ItemsSource'(多一個')。是的,這將是你的類型的列表。 – shriek

+0

謝謝,它工作:) – gliderkite