Ich versuche, ein Wörterbuch> mit der Listenansicht zu binden. Festlegen der Kopfzeile als Schlüssel für das Wörterbuch und die Liste der Terminobjekte als Elemente. Die Daten werden jedoch nicht gebunden.

Die Zeichenfolge (Schlüssel) muss mit dem Header-Element verknüpft sein, und die innere Listenliste enthält die Objekte unter diesem Header.

Ausgabe geplant: Bildbeschreibung hier eingeben

Wie kann ich das beheben?

<ListView ScrollViewer.VerticalScrollBarVisibility="Hidden"        ScrollViewer.VerticalScrollMode="Auto" ScrollViewer.HorizontalScrollMode="Auto"
                         ItemsSource="{Binding Source={StaticResource   EventsObj}}">      
<ListView.ItemsPanel>
    <ItemsPanelTemplate>
        <VirtualizingStackPanel Orientation="Horizontal" />
    </ItemsPanelTemplate>
</ListView.ItemsPanel>

<ListView.ItemTemplate>
    <DataTemplate>
        <Textblock Text="{Binding EventsObj.Value.UserName}"/>
        <Textblock Text="{Binding EventsObj.Value.VisitorFor}"/>
    </DataTemplate>
</ListView.ItemTemplate>
<ListView.HeaderTemplate>
    <DataTemplate>
        <Grid Margin="5,10,0,10"  Background="Black">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="68*"/>
                <ColumnDefinition Width="21*"/>
            </Grid.ColumnDefinitions>
            <TextBlock Foreground="White" Text="{Binding EventsObj.Key}">
            </TextBlock>
        </Grid>
    </DataTemplate>
</ListView.HeaderTemplate>

Objekt in C # ist

public class Appointment
{
   public Dictionary<DateTime, List<Appointments>> Data {get; set;}
}

public class Appointments
{
 public string UserName {get; set;}
 public string VisitorFor {get; set;}
}


        List<Appointments> Datas = new List<Appointments>();
        Datas = new List<Aprio.Appointments>();
        Datas.Add(new Appointments { UserName = "Pradeep", VisitorFor = "John Sam" });
        Datas.Add(new Appointments { UserName = "Danny", VisitorFor = "John Sam" });
        Datas.Add(new Appointments { UserName = "Ram", VisitorFor = "John Sam" });
        Datas.Add(new Appointments { UserName = "Siva", VisitorFor = "John Sam" });
        Datas.Add(new Appointments { UserName = "Ragu", VisitorFor = "John Sam" });
        this.Appointment.Add("John", Datas);

        List<Appointments> Datas2 = new List<Appointments>();
        Datas2 = new List<Appointments>();
        Datas2.Add(new Appointments { UserName = "Guru", VisitorFor = "Sam Hilferg" });
        Datas2.Add(new Appointments { UserName = "Jack", VisitorFor = "Sam Hilferg" });
        Datas2.Add(new Appointments { UserName = "Bob", VisitorFor = "Sam Hilferg" });
        this.Appointment.Add("Sam", Datas2);
0
Pradeep K 23 Dez. 2015 im 07:36

2 Antworten

Beste Antwort

Ich habe den Header nach rechts verschoben. Diese Antwort finden Sie in MSDN. Es hat bei mir funktioniert.

 <GridView.ItemsPanel>
    <ItemsPanelTemplate>
    <ItemsWrapGrid GroupHeaderPlacement="Left"/>
    </ItemsPanelTemplate>
 </GridView.ItemsPanel>
0
Pradeep K 28 Dez. 2015 im 05:47

Ändern Sie ListView ItemTemplate. Versuche dies!

<ListView.ItemTemplate>
                <DataTemplate>
                    <ListView DataContext="{Binding EventsObj.Value}">
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <StackPanel>
                                    <Textblock Text="{Binding UserName}"/>
                                    <Textblock Text="{Binding VisitorFor}"/>
                                </StackPanel>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>
                </DataTemplate>
            </ListView.ItemTemplate>
0
sriman reddy 23 Dez. 2015 im 06:44