Ich habe ein Benutzersteuerelement mit einem ListView, das einfache Elemente aus einer ObservableCollection enthält. Ich möchte, dass das ContextMenu dieser ListView Elemente enthält, abhängig davon, was in der ListView ausgewählt ist. Wenn kein Element ausgewählt ist, sollten einige MenuItems nicht sichtbar sein.ContextMenu's MenuItem-Sichtbarkeit an ListView-Auswahl binden
Mein Konverter wird nicht einmal aufgerufen, wenn ich das ContextMenu öffne. Die Bindung scheint falsch zu sein, finde ich diese im Ausgabefenster:
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=listView'. BindingExpression:Path=SelectedItem; DataItem=null; target element is 'MenuItem' (Name=''); target property is 'Visibility' (type 'Visibility')
Ich verstehe nicht, was falsch ist und kann es nicht durch das Suchen im Internet herausfinden.
hier etwas vereinfachte Code:
<UserControl x:Class="MyApp.DatabaseControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:l="clr-namespace:MyApp"
Height="Auto"
Width="Auto">
<UserControl.Resources>
<l:ValueToVisibilityConverter x:Key="valueToVisibility" />
</UserControl.Resources>
<Grid>
<ListView x:Name="listView" ItemsSource="{Binding Persons}">
<ListView.View>
<GridView>
<GridViewColumn Width="140" Header="First Name" DisplayMemberBinding="{Binding FirstName}"/>
<GridViewColumn Width="140" Header="Last Name" DisplayMemberBinding="{Binding LastName}" />
</GridView>
</ListView.View>
<ListView.ContextMenu>
<ContextMenu>
<MenuItem
Header="Open"
Visibility="{Binding SelectedItem, ElementName=listView, Converter={StaticResource valueToVisibility}}"/>
<Separator/>
<MenuItem Header="Add..."/>
<MenuItem Header="Remove"/>
</ContextMenu>
</ListView.ContextMenu>
</ListView>
</Grid>
Vielen Dank!
Danke, das hat den Trick !! – fury
Wenn diese Frage beantwortet wurde, sollten Sie sie als Akzeptiert markieren, damit sie nicht mehr als unbeantwortete Frage angezeigt wird. – Andy