2012-08-26 2 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; 

을하지만 아무 것도 얻을 수 없습니다. 그룹 제목으로 키를 갖고이 목록의 요소 목록으로 모든 목록을 포함하도록 어떻게 수정해야합니까 ?? 좋아 // 편집

내가 대신 사전> 목록을 만드는 것이 더 나은 것으로 나타났습니다. 나는 지금 3 개의 그룹 머리말을 얻는다 (나는 나의 목록에 3 개의 목록을 가지고있다). 그러나 어떤 항목도 가지지 마라. IMO가 처음보다 더 좋은 방법입니다

// EDIT 2 배경과 전경이 흰색 인 항목을 보지 못했습니다. 바보 같은 :)하지만 지금은 해결할 마지막 문제가 있습니다. 그룹 제목을 동적으로 설정하는 방법은 무엇입니까? 당신이 원하는 경우

+0

질문을 변경하지 마십시오. 그것은 움직이는 표적에서 우리를 쏘게합니다. –

+0

@Erno 죄송합니다. 가능한 한 많은 정보를 제공해 드리고자합니다. – Fixus

+0

이것은 더 많은 정보가 아니며 단지 다른 질문 일뿐입니다. 마지막으로 추가 한 것과 동일한 문제가 있다고 생각해보십시오. 그가이 질문에 걸려있는 기회는 무엇입니까? –

답변

1

당신은 실제로 그룹을 사용하려면 사용자 정의 클래스를 만들 필요가 없습니다. 사실 당신은 당신을 위해 그것을 할 LINQ를 사용할 수 있습니다

VAR 결과가 GRP에 act.Project에 의한 활동 단체 행동의 행위에서 ORDERBY는 GRP 선택 grp.Key =;

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

불행히도 저는 제 문제를 해결할 수 없습니다. 항목 만 그리드보기에 바인딩하고 싶을 때 편리합니다. 하지만 그룹화 된 객체를 바인딩 할 수는 없습니다. key가있는 exaple object에 대해서는 을 항목으로 사용하십시오. 나는 아무것도 얻지 못한다. 그냥 빈 공간. 항목 없음, 제목 없음 : / – Fixus

관련 문제