Ich habe eine GridView
, von der die ItemsSource
an eine Liste von StreamCollections
gebunden ist. In der ItemsTemplateSelector
, ändere ich die DataTemplate
je nach Wert dieser StreamCollection
.Ändern der Bindungsquelle eines gridviewitem
protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
{
FrameworkElement element = container as FrameworkElement;
if (element != null && item is StreamCollection)
{
StreamCollection stream = (StreamCollection) item;
if (stream.Playlist != null)
{
return Application.Current.Resources["PlaylistDataTemplate"] as DataTemplate;
}
if (stream.Track != null)
{
return Application.Current.Resources["TrackDataTemplate"] as DataTemplate;
}
}
return null;
}
Wenn die Playlist
nicht null
ist, sollte die GridViewItem
haben als die Playlist
Bindung; gleich für Track
. Das FrameworkElement
Element ist vom Typ GridViewItem
, aber ich kann keinen Hinweis auf die BindingSource
finden.
Was ist der XAML-Code? Können Sie ohne den Template-Selektor versuchen, nur um sicher zu sein, dass Ihr XAML-Code und die Bindung für einen der Elementtypen (Track zum Beispiel) in Ordnung ist? –
Die Bindung funktioniert für das Element Track und für Playlisten. Aber in meiner Liste kann es zwei verschiedene Typen geben, entweder einen Track oder eine Playlist. Aus diesem Grund erstelle ich ein GridView, das an StreamCollection gebunden ist (das eine Eigenschaftsspur und eine Wiedergabeliste enthält). –
Ich verstehe, dass die Bindung Ihrer Listen- und Listenelemente nicht funktioniert, wenn Sie den TemplateSelector verwenden. Also kannst du es bitte versuchen, ohne es zu benutzen, um zu überprüfen, ob das Problem wirklich hier ist. Oder erarbeiten Sie Ihr Problem, wenn das nicht Ihr Problem ist? –