Hi,
ich habe ein elendes Problem mit dem CollectionContainer. Mein Ziel ist, dass ich oben statische Menuitems habe und unten welche aus einer Liste, die einen Command aufrufen. Mein XAML-Code sieht so aus:
Bei bereits vorhanden Items funktioniert das wunderbar, das heißt, der Command wird aufgerufen. Neue Items können jedoch gar nicht erst an den DataContext binden - der Command wird nicht aufgerufen und es gibt eine Bindings-Fehlermeldung:
Auch wenn ich eins höher gehe (also das Window suche) funktioniert es nicht. Bin echt am Verzweifeln, diese blöden Collections außerhalb des Visual Trees
ich habe ein elendes Problem mit dem CollectionContainer. Mein Ziel ist, dass ich oben statische Menuitems habe und unten welche aus einer Liste, die einen Command aufrufen. Mein XAML-Code sieht so aus:
XML-Quellcode
- <ListView> [...] <ContextMenu> [...]
- <MenuItem Header="{DynamicResource AddToPlaylist}">
- <MenuItem.Resources>
- <CollectionViewSource Source="{Binding RelativeSource={RelativeSource AncestorType=ListView},Path=DataContext.MusicManager.Playlists}" x:Key="MyMenuItems"/>
- </MenuItem.Resources>
- <MenuItem.ItemsSource>
- <CompositeCollection>
- <MenuItem Header="{DynamicResource NewPlaylist}"/>
- <Separator />
- <CollectionContainer Collection="{Binding Source={StaticResource MyMenuItems}}"/>
- </CompositeCollection>
- </MenuItem.ItemsSource>
- <MenuItem.ItemContainerStyle>
- <Style TargetType="MenuItem" BasedOn="{StaticResource MetroMenuItem}">
- <Setter Property="Command" Value="{Binding RelativeSource={RelativeSource AncestorType=ListView},Path=DataContext.TrackSearcher.AddToPlaylist}"/>
- <Setter Property="CommandParameter" Value="{Binding}"/>
- <Setter Property="HorizontalContentAlignment" Value="Left"/>
- <Setter Property="VerticalContentAlignment" Value="Center"/>
- </Style>
- </MenuItem.ItemContainerStyle>
- </MenuItem>
Bei bereits vorhanden Items funktioniert das wunderbar, das heißt, der Command wird aufgerufen. Neue Items können jedoch gar nicht erst an den DataContext binden - der Command wird nicht aufgerufen und es gibt eine Bindings-Fehlermeldung:
Quellcode
- System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ListView', AncestorLevel='1''. BindingExpression:Path=DataContext.TrackSearcher.AddToPlaylist; DataItem=null; target element is 'MenuItem' (Name=''); target property is 'Command' (type 'ICommand')
Auch wenn ich eins höher gehe (also das Window suche) funktioniert es nicht. Bin echt am Verzweifeln, diese blöden Collections außerhalb des Visual Trees