Ich habe eine ListView, deren ItemsSource ich programmatisch in den Code hinter gesetzt habe. Früher hatte ich nur eine Vorlage, aber jetzt möchte ich mehrere Vorlagen verwenden und die Vorlage entsprechend dem Element auswählen, das ich zur ListView hinzufüge.ItemTemplateSelector funktioniert nicht für ListView ohne Bindung
Dies ist der XAML-Code ich habe:
<Page.Resources>
<local:TemplateSelector x:Key="myTemplateSelector" TemplateA="{StaticResource TemplateA}" TemplateB="{StaticResource TemplateB}" />
<!-- TemplateA and TemplateB -->
</Page.Resources>
<ListView
x:Name="MasterListView"
Grid.Row="1"
ItemContainerTransitions="{x:Null}"
ItemTemplateSelector="{StaticResource myTemplateSelector}"
IsItemClickEnabled="True"
ItemClick="MasterListView_ItemClick"/>
ich dann die ItemSource des Listview gesetzt und das ist mein TemplateSelector:
public class TemplateSelector : DataTemplateSelector
{
public DataTemplate TemplateA { get; set; }
public DataTemplate TemplateB { get; set; }
public new DataTemplate SelectTemplate(object item, DependencyObject container)
{
return TemplateA;
}
}
Dies ist jedoch nicht funktioniert. Anstelle meiner gewünschten Vorlage bekomme ich immer den gleichen Text für jedes Objekt: AppName.ViewModels.ViewModel1 (der Typ der Daten, die ich zeigen möchte).
In der Vergangenheit, als ich hatte nur ein itemtemplate ich dies in der XAML verwendet und es funktioniert:
<ListView
x:Name="MasterListView"
Grid.Row="1"
ItemContainerTransitions="{x:Null}"
ItemTemplate="{StaticResource TemplateA}"
IsItemClickEnabled="True"
ItemClick="MasterListView_ItemClick"/>
Wie kann ich das ItemTemplateSelector zu arbeiten? Ich habe dort Haltepunkte platziert, aber es wird nicht einmal aufgerufen.
verwenden Wenn ich das versuche ich die folgende Fehlermeldung erhalten: TemplateSelector.SelectTemplate (Objekt, DependencyObject) ‚: kann nicht Zugriffsmodifikatoren ändern, wenn überschreiben‘ geschützt 'geerbtes Mitglied' DataTemplateSelector.SelectTemplate (Objekt, DependencyObject) ' – slimshady
Seltsam, ich denke, eine andere Framework-Version? Sie sollten jedoch anstelle von neu überschreiben. Ich habe meinen Beitrag mit der Quelle aktualisiert, da der Zugriffsmodifikator öffentlich ist. – user1515791