2012-12-07 32 views
3

我一直在對付這個問題很長一段時間,我需要一些專家幫助來獲得我想要的結果。這裏是我的listview與gridviewcolumn看起來像通過綁定源爲lstPerson和它的DataMember性別和名稱的結果。使用GridViewColumn創建ListView

Person類:

private int ID { get; set; } 
private string Gender { get; set; } 
private string FName { get; set; } 

List<Person> lstPerson = GetPersonInformation(); 
//select Gender, FirstName From Person Order By Gender 

ListView結果:

John 
Mike 
Gabriel 
Kevin 
Peter 
Stacy 
Jen 
Lily 
Lisa 
Vivian 

上面的不是我想要顯示的內容。如果我想要上述內容,這很容易做到。下面的結果是我想要實現的...對於這個例子,最多4列和最多3行...每3行,創建一個3行的列,直到達到4列。

Male  Gabriel  Female  Lily 
John  Kevin  Stacy  Lisa 
Mike  Peter  Jen  Vivian 

有沒有人知道我可以通過XAML或代碼背後實現?

+0

請問您可以提供什麼'GetPersonInformation()'實際上做什麼? :) –

+0

@Profrofo EGY - 如上面張貼的那樣...選擇Gender,Name From Person Order By Gender ...只需從我的人物表中獲取fname(第一個)和性別,然後按性別排序。 – user1884032

+0

從你的「我想要的」輸出中不清楚你實際上想要在佈局方面發生什麼。如果只有兩名男性,那麼在「男性」下面應該只有一列,還是應該在右下角有兩行兩列的空單元格? '男'總是在左邊是重要的嗎?如果出現第三個「未知」性別,那麼該去哪裏?用戶是否可以點擊「女性」並選擇它?當'Gabriel'被選中並且用戶點擊右箭頭鍵時會發生什麼?第六位女性會在第五列右邊顯示,還是低於現有女性? –

回答

0

你可以嘗試用ItemsPanelTemplate玩:

<ListView> 
    <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapPanel Width="200" /> 
     </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Margin="5 0" Text="{Binding FName}" /> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

如果您需要的4列,即使名稱很長,您可以使用UniformGrid,而不是WrapPanel

<ItemsPanelTemplate> 
    <UniformGrid Columns="4" /> 
</ItemsPanelTemplate> 
+0

感謝您在正確的軌道上,但我會如何添加像它的類別(男,女)? – user1884032

+0

這取決於你想要什麼。只需編輯'ListView.ItemTemplate'並添加任何你喜歡的東西。例如,您可以在其中添加另一個「TextBlock」。 – icebat

+0

如果你看看我在你的文章中做了什麼,我會爲每個項目獲取性別。我只希望它根據我發佈的結果顯示一次,我希望看到。 – user1884032

0

你需要rightsorted列表 - 這就是全部!

<ListBox x:Name="lbPeoples" ScrollViewer.VerticalalScrollBarVisibility="Disabled" ItemsSource="{Binding Path=Peoples}"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapPanel Orientation="Vertical" /> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 

其中:列表框高度= 3 * Item_Height,列表框寬度= 4名* Item_Width

人民[0] =男,萬衆[6] =女人 -

不是好辦法 - 但簡單!