ItemsControl und ItemTemplateSelector in der Windows 10 UWP-App

8

Ich habe vor einiger Zeit ein wenig WPF programmiert, aber ich komme gerade mit UWP zu xaml zurück, aber ich denke, das sollte funktionieren und kann nicht herausfinden warum. Grundsätzlich möchte ich ein ItemsControl (weil ich nur einige Daten auflisten möchte, möchte ich nicht Auswahl) anstelle eines ListView-Steuerelement. Hier sind meine Ressourcen:

%Vor%

Hier ist mein ItemsControl:

%Vor%

Hier ist mein DataTemplateSelector:

%Vor%

Anstatt eine meiner Vorlagen anzuzeigen, wird nur der Name meines ViewModel-Typs (also im Grunde ToString) angezeigt.

Wenn ich es jedoch von ItemsControl auf ListView umstelle, funktioniert es einwandfrei.

Irgendwelche Vorschläge?

    
Cleverguy25 21.01.2016, 06:53
quelle

4 Antworten

9

Verwenden Sie stattdessen diese Überschreibung:

%Vor%

Dies ist derjenige, der aufgerufen wird, nicht der ohne den zweiten Parameter.

    
Kory Gill 21.01.2016, 23:27
quelle
5

Interessant - ListView und GridView rufen beide den Template Selector auf; plain ItemsControl oder ListBox nicht.

Das Überschreiben der anderen SelectTemplateCore-Methode in der Vorlagenauswahl hilft, z. B .:

%Vor%

Die letztere Methode wird in allen Fällen aufgerufen; Die erste wird nicht für ItemsControl -Elemente aufgerufen. Diese Seite enthält eine Erläuterung zu Sortiert:

  

Wenn Ihr ItemsControl.ItemsPanel ein ItemsStackPanel oder ItemsWrapGrid ist, geben Sie eine Überschreibung für die Methode SelectTemplateCore(Object) an. Wenn das ItemsPanel ein anderes Panel ist, z. B. VirtualizingStackPanel oder WrapGrid , geben Sie eine Überschreibung für die Methode SelectTemplateCore(Object, DependencyObject) an.

    
Petter Hesselberg 22.01.2016 09:00
quelle
0

Vielleicht solltest du <TextBlock Text="{Binding Sent}" /> verwenden Sie binden nichts in Ihre Vorlage.

    
TheOliver 21.01.2016 18:34
quelle
0

Hier ist, was die Dokumentation sagt:

Anmerkungen

Wenn Ihr ItemsControl.ItemsPanel ein ItemsStackPanel oder ItemsWrapGrid ist, stellen Sie eine Überschreibung für die SelectTemplateCore (Object) -Methode bereit. Wenn das ItemsPanel ein anderes Panel ist, z. B. VirtualizingStackPanel oder WrapGrid, müssen Sie die Methode SelectTemplateCore (Object, DependencyObject) überschreiben.

    
beatnikthedan 14.02.2018 15:36
quelle

Tags und Links