2012-08-26 63 views
1

我有一本字典,其中鍵是一個String和元素是一個列表如何創建GridView控件從字典

我想從與元素元素每個鍵創建一個組。但我不`噸知道如何使它

<Page.Resources> 
    <!-- 
     Collection of grouped items displayed by this page, bound to a subset 
     of the complete item list because items in groups cannot be virtualized 
    --> 
    <CollectionViewSource 
     x:Name="groupedItemsViewSource" 
     IsSourceGrouped="true" 
     /> 

</Page.Resources> 

<GridView ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}" 
     IsSwipeEnabled="True"> 
      <GridView.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding name}" 
      Foreground="White" /> 
       </DataTemplate> 
      </GridView.ItemTemplate> 
      <GridView.ItemsPanel> 
       <ItemsPanelTemplate> 
        <StackPanel Orientation="Horizontal" /> 
       </ItemsPanelTemplate> 
      </GridView.ItemsPanel> 
      <GridView.GroupStyle> 
       <GroupStyle> 
        <GroupStyle.HeaderTemplate> 
         <DataTemplate> 
<TextBlock Text="Test 123" Foreground="Gold" /> 
         </DataTemplate> 
        </GroupStyle.HeaderTemplate> 
        <GroupStyle.Panel> 
         <ItemsPanelTemplate> 
          <VariableSizedWrapGrid Orientation="Vertical" /> 
         </ItemsPanelTemplate> 
        </GroupStyle.Panel> 
       </GroupStyle> 
      </GridView.GroupStyle> 
     </GridView> 

在環路我創建字典

groups.Add(this.letters[i], items); 

之後,我有

groupedItemsViewSource.Source = groups; 

但我什麼也沒得到。我應該如何解決這個問題,以便將組合鍵和每個列表都作爲這個網格中的元素列表?

//編輯

好的我發現使用List>而不是Dictionary是更好的。我現在得到3組標題(因爲我列表中有3個列表),但沒有任何項目。 IMO這是比更好的辦法第一

// EDIT 2 我didn`t看到物品引起的背景和前景是白色的。愚蠢的我:)但現在我有最後一個問題來解決。如何動態設置組標題?如果你想

+0

不要改變你的問題。它使我們在一個移動的目標上開槍。 –

+0

@Erno對不起,我只是儘量給儘可能多的信息,我可以 – Fixus

+0

這不是更多的信息,這只是另一個問題。想象一下,有些人與你添加的最後一個人有同樣的問題。他在這個問題上絆倒了什麼? –

回答

1

你其實不必創建自定義類,使分組。事實上,你可以使用LINQ來爲你做它:

VAR的結果=從行爲活動組由act.Project行爲變成GRP 排序依據grp.Key選擇GRP;

cvsActivities.Source = result;

爲了在GridView中顯示分組項目,您必須使用CollectionViewSource。只需將組設置爲GridView.ItemsSource不起作用。您必須設置GridView.ItemsSource = CollectionViewSource和CollectionViewSource必須指向組。您還可能必須設置CollectionViewSource.IsSourceGrouped = true。

0

字典沒有實現所需要INotifyPropertyChanged的或INotifyCollectionChanged你的綁定工作

public class yourclass 
{ 
    public string Key { get; set; } 
    public int Value { get; set; } 
} 


ObservableCollection<yourclass> dict = new ObservableCollection<MyCustomClass>(); 
dict.Add(new yourclass{Key = "yourkey", Value = whatyouwant}); 
dict.Add(new yourclass{ Key = "yourkey2", Value = whatyouwant }); 
+0

感謝您的幫助。我有這樣的課。與關鍵領域和價值女巫是一個列表類型。但是現在,我在綁定後絕對沒有任何東西。也許我可以給你發更多的代碼,這樣你就可以更好地瞭解一下嗎? – Fixus

+0

嗨看到這個項目,它會幫助你瞭解如何綁定網格控件http://www.codeproject.com/Articles/30905/WPF-DataGrid-Practical-Examples –

+0

不幸我不能解決我的問題。當我只想綁定項目到網格視圖時很容易。但是我不能綁定分組對象。對於帶有鍵的對象和列表作爲項目。我什麼也沒得到。只是空白。沒有項目,沒有標題:/ – Fixus