cómo crear una vista de cuadrícula desde el diccionario

Tengo un diccionario donde la clave es una cadena y el elemento es una lista

Quiero crear un grupo de cada clave con elementos de elemento. Pero no se como hacerlo

<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>

En loop creo el diccionario

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

y despues de eso tengo

groupedItemsViewSource.Source = groups;

Pero no consigo nada. ¿Cómo debo corregir esto para tener una clave como título de grupo y cada lista como una lista de elementos en esta cuadrícula?

// EDITAR

Ok, descubrí que hacer List> en lugar de Dictionary es mejor. Ahora obtengo 3 encabezados de grupo (porque tengo 3 listas en mi lista) pero no tengo elementos. En mi opinión, esta es una mejor manera que la primera.

// EDITAR 2 No vi elementos porque el fondo y el primer plano eran blancos. Estúpido de mí :) Pero ahora tengo el último problema que resolver. ¿Cómo establecer dinámicamente los títulos de los grupos?

preguntado el 26 de agosto de 12 a las 11:08

No cambies tu pregunta. Nos hace disparar a un blanco en movimiento. -

@Erno, lo siento, solo estoy tratando de dar la mayor cantidad de información posible:

Esto no es más información, es solo otra pregunta. Imagina que algunos tienen el mismo problema que el último que agregaste. ¿Cuáles son las posibilidades de que tropiece con esta pregunta? -

2 Respuestas

En realidad, no tiene que crear clases personalizadas para habilitar la agrupación. De hecho, puede usar LINQ para que lo haga por usted:

var result = from act in Activities group act by act.Project into grp orderby grp.Key select grp;

cvsActivities.Fuente = resultado;

Para mostrar elementos agrupados en un GridView, debe usar CollectionViewSource. Simplemente configurar los grupos como GridView.ItemsSource no funcionará. Debe establecer GridView.ItemsSource = un CollectionViewSource y CollectionViewSource debe apuntar a los grupos. Es probable que también deba configurar CollectionViewSource.IsSourceGrouped = true.

Respondido 27 ago 12, 22:08

El diccionario no implementa INotifyPropertyChanged o INotifyCollectionChanged, que es necesario si desea que su enlace funcione

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 });

Respondido 26 ago 12, 12:08

gracias por su ayuda. Tengo clase de este tipo. Con campo clave y valor que es una Lista tipo. Pero ahora no obtengo absolutamente nada después de la vinculación. ¿Tal vez pueda enviarle más código para que tenga una mejor visión general? - Fixus

hola, mira este proyecto, te ayudará a comprender cómo vincular un control de cuadrícula codeproject.com/Articles/30905/WPF-DataGrid-Practical-Examples - Hassan Boutougha

lamentablemente puedot solve my problem. When I want to bind only items to grid view ites fácil Pero no puedo enlazar objetos agrupados. Por ejemplo, objeto con clave y Lista como artículos. no consigo nada Solo espacio en blanco. Sin artículos, sin títulos :/ - Fixus

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.