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.
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);
2 Antworten
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>
Ä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>
Neue Fragen
windows
Das Schreiben von Software, die für das Microsoft Windows-Betriebssystem spezifisch ist: APIs, Verhalten usw. ALLGEMEINE FENSTERUNTERSTÜTZUNG IST OFF-THEMA. Support-Fragen können unter https://superuser.com gestellt werden