Tengo un control de usuario con un ListView que contiene elementos simples de un ObservableCollection. Me gustaría que el ContextMenu de ese ListView contenga elementos según lo que esté seleccionado en ListView. Si no se selecciona ningún elemento, algunos ítems del menú no deberían estar visibles.Enlazar la visibilidad de Menu de ContextMenu para la selección de ListView
Mi convertidor ni siquiera se llama cuando abro el ContextMenu. La unión parece estar mal, encuentro esto en la ventana de salida:
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')
No entiendo lo que está mal y no podía averiguarlo mediante la búsqueda en la web.
Aquí hay un código simplificado:
<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>
Muchas gracias!
Gracias, esto hizo el truco !! – fury
Si respondió su pregunta, debe marcarla como Aceptada para que ya no aparezca como una pregunta sin respuesta. – Andy