Я пытаюсь привязать контекстное меню к списку и открыть его, когда пользователь нажимает кнопку внутри элемента списка.
Если я применяю контекстное меню к самому списку, привязки работают правильно.
Если я применяю контекстное меню к кнопке внутри элемента списка, я не могу привязать его к контексту данных элемента списка.
Следовательно, работает следующее, но только щелчок правой кнопкой мыши на элементе списка:
<ListBox ItemsSource="{Binding Items}">
<ListBox.ContextMenu>
<ContextMenu DataContext="{Binding PlacementTarget.SelectedItem, RelativeSource={RelativeSource Self}}">
<MenuItem
Header="{Binding Name}"
IsCheckable="True"
IsChecked="{Binding Active}" />
</ContextMenu>
</ListBox.ContextMenu>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<RadioButto />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
В следующем примере я пытаюсь привязать контекстное меню из-под переключателя, чтобы позже я мог открыть контекстное меню, щелкнув левой кнопкой мыши по кнопке, а не щелкнув правой кнопкой мыши в любом месте элемента списка:
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<RadioButton>
<RadioButton.ContextMenu>
<ContextMenu DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}, Path=PlacementTarget.DataContext}">
<MenuItem
Header="{Binding Name}"
IsCheckable="True"
IsChecked="{Binding Active}" />
</ContextMenu>
</RadioButton.ContextMenu>
</RadioButton>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Я пробовал различные варианты привязки, но мне не очень повезло.
Подойдет любое решение, которое дает мне контекстное меню рядом с кнопкой, когда я нажимаю на кнопку (и только на кнопку).