none
gridview en datatemplate + Binding List RRS feed

  • Question

  • Bonjour,J'ai une liste de data que je voudrais afficher via un datatemplate "ChainedFunction" que j'ai en ressource.

    Mais impossible, je n'arrive qu'à obtenir un "Windows.UI.xaml.DataTemplate" qui s'affiche...

    Voici l'extrait "intéressant" de mon xaml :

            <!--TODO: le contenu doit être placé dans la grille suivante-->
            <Grid Grid.Row="1" x:Name="ContentRoot" Margin="5,20,5,0"  Background="{ThemeResource HubBackgroundImageBrush}" IsDoubleTapEnabled="False" IsHoldingEnabled="False" IsRightTapEnabled="False" IsTapEnabled="False" ManipulationMode="None">
                <GridView x:Name="ChainedGVN" x:Uid="ChainedGVU">
                    <DataTemplate>
                        <GridView                        
                            Margin="0,9.5,0,0"
                            AutomationProperties.AutomationId="ItemGridView"
                            AutomationProperties.Name="Items In Group"
                            ItemsSource="{Binding myChainedFunction}"
                            ItemTemplate="{StaticResource ChainedFunction}"
                            SelectionMode="None"
                            IsItemClickEnabled="True"
                            ItemClick="ChainedClick"
                            ContinuumNavigationTransitionInfo.ExitElementContainer="True">
    
                            <GridView.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <ItemsWrapGrid Orientation="Horizontal" MaximumRowsOrColumns="1"/>
                                </ItemsPanelTemplate>
                            </GridView.ItemsPanel>
    
                        </GridView>
                    </DataTemplate>
                </GridView>
            </Grid>
    Ou est-ce que ca cloche ? d'avance merci


    NG


    • Modifié gNerso mardi 17 février 2015 12:15 oubli d'une info
    mardi 17 février 2015 11:06

Réponses

  • Bonjour,

    vous devez avoir une source pour ton gridview.

    soit vous tester avec une liste simple des "string" soit avec un dictionnaire.

    sinn vérifie votre code.

    http://www.codeproject.com/Articles/30905/WPF-DataGrid-Practical-Examples

    mardi 17 février 2015 14:47

Toutes les réponses

  • Bonjour,

    Votre GridView (le premier ChainedGVN), n'a aucunes sources donc il n'affiche rien donc il ne risque pas d'y avoir des éléments dans l'enfant.


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    mardi 17 février 2015 11:31
  • Ok, est-ce le fameux DataContext qui manque ? Que dois-je y mettre ? myChainedFunction ?

    NG

    mardi 17 février 2015 12:17
  • J'ai remodifier plus profondément de cette maniere :

    Code C# :

            private class ContexteChainedFunction
            {
                public int nbFunction ;
                public List<SampleDataItem> myChainedFunction {get ; set;}
    
                public ContexteChainedFunction()
                {
                    myChainedFunction = new List<SampleDataItem>() ;
                    nbFunction = 0;
                }
            }
    
            private ContexteChainedFunction contexteChainedFunction = new ContexteChainedFunction();

    Et le code Xaml :

            <!--TODO: le contenu doit être placé dans la grille suivante-->
            <Grid Grid.Row="1" x:Name="ContentRoot" Margin="5,20,5,0"  Background="{ThemeResource HubBackgroundImageBrush}" IsDoubleTapEnabled="False" IsHoldingEnabled="False" IsRightTapEnabled="False" IsTapEnabled="False" ManipulationMode="None">
                <GridView x:Name="ChainedGVN" x:Uid="ChainedGVU" DataContext="{Binding contexteChainedFunction}">
                    <DataTemplate>
                        <GridView                        
                            Margin="0,9.5,0,0"
                            AutomationProperties.AutomationId="ItemGridView"
                            AutomationProperties.Name="Items In Group"
                            ItemsSource="{Binding myChainedFunction}"
                            ItemTemplate="{StaticResource ChainedFunction}"
                            SelectionMode="None"
                            IsItemClickEnabled="True"
                            ItemClick="ChainedClick"
                            ContinuumNavigationTransitionInfo.ExitElementContainer="True">
    
                            <GridView.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <ItemsWrapGrid Orientation="Horizontal" MaximumRowsOrColumns="1"/>
                                </ItemsPanelTemplate>
                            </GridView.ItemsPanel>
    
                        </GridView>
                    </DataTemplate>
                </GridView>
            </Grid>

    Mais c'est pas mieux.


    NG


    • Modifié gNerso mardi 17 février 2015 14:04 manquait un binding
    mardi 17 février 2015 12:46
  • Bonjour,

    vous devez avoir une source pour ton gridview.

    soit vous tester avec une liste simple des "string" soit avec un dictionnaire.

    sinn vérifie votre code.

    http://www.codeproject.com/Articles/30905/WPF-DataGrid-Practical-Examples

    mardi 17 février 2015 14:47
  • Ok, vu : ce sont les bornes <DataTemplate> à l'intérieur du GridView qui posaient problème. En supprimant, il retrouve sa source. Code final :

    xaml :

            <!--TODO: le contenu doit être placé dans la grille suivante-->
            <Grid Grid.Row="1" x:Name="ContentRoot" Margin="5,20,5,0"  Background="{ThemeResource HubBackgroundImageBrush}" IsDoubleTapEnabled="False" IsHoldingEnabled="False" IsRightTapEnabled="False" IsTapEnabled="False" ManipulationMode="None">
                <GridView x:Name="ChainedGVN" x:Uid="ChainedGVU" 
                            DataContext="{Binding contexteChainedFunction}"
                            Margin="0,9.5,0,0"
                            AutomationProperties.AutomationId="ItemGridView"
                            AutomationProperties.Name="Items In Group"
                            ItemsSource="{Binding myChainedFunction}"
                            ItemTemplate="{StaticResource ChainedFunction}"
                            SelectionMode="None"
                            IsItemClickEnabled="True"
                            ItemClick="ChainedClick"
                            ContinuumNavigationTransitionInfo.ExitElementContainer="True">
    
                            <GridView.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <ItemsWrapGrid Orientation="Horizontal" MaximumRowsOrColumns="1"/>
                                </ItemsPanelTemplate>
                            </GridView.ItemsPanel>
    
                        </GridView>
                    </DataTemplate>
                </GridView>
            </Grid>

    Et dans le C# :

    private class ContexteChainedFunction { public int nbFunction ; private List<SampleDataItem> myChainedFunction ; public List<SampleDataItem> MyChainedFunction {get; set;} public ContexteChainedFunction() { myChainedFunction = new List<SampleDataItem>() ; nbFunction = 0; } } private ContexteChainedFunction contexteChainedFunction = new ContexteChainedFunction();

    Grand merci pour votre aide !


    NG


    • Modifié gNerso mercredi 18 février 2015 14:32
    mardi 17 février 2015 15:13