У меня есть список, элемент списка которого содержит, помимо прочего, кнопку, как показано ниже:
<DataTemplate x:Key="cDataTemplate" DataType="x:Type utils:cd">
<StackPanel Orientation="Horizontal" Background="Transparent">
<Button Style="{StaticResource LIButton}" x:Name="CButton"
Command="{x:Static this:EditorCommands.RaiseCMenu}"
CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}">
<Image Name="Image" Source="icon_c.jpg" Width="33" Height="21"/>
<Button.ContextMenu>
<ContextMenu x:Name="ctxtCard">
<MenuItem Header="..." Command="{x:Static this:EditorCommands.abc}"/>
<MenuItem Header="..." Command="{x:Static this:EditorCommands.def}"/>
</ContextMenu>
</Button.ContextMenu>
</Button>
<StackPanel Background="Transparent">
<TextBlock HorizontalAlignment="Left">
...
</TextBlock>
<TextBlock HorizontalAlignment="Left">
...
</TextBlock>
</StackPanel>
</StackPanel>
</DataTemplate>
<Style x:Key="cListBoxItemStyle" TargetType="ListBoxItem">
<Setter Property="ContentTemplate" Value="{DynamicResource cDataTemplate}"/>
<Setter Property="Background" Value="transparent"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border
Name="Border"
...
Background="Transparent">
<ContentPresenter Name="Content" HorizontalAlignment="Left" VerticalAlignment="Center" Opacity="0.55"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="Border" Property="BorderBrush" Value="Black"/>
</Trigger>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="Border" Property="BorderThickness" Value="1,1,1,1"/>
</Trigger>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="Content" Property="Opacity" Value="1.0"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Content" Property="Opacity" Value="1.0"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
При нажатии кнопки в элементе списка, который не выбран, она запускает свою команду, которая вызывает контекстное меню в выделенном фрагменте кода и выбирает элемент списка родительского элемента кнопки. (Весь смысл в том, чтобы вызвать контекстное меню при щелчке левой кнопкой мыши.) Но на всю жизнь я не могу получить кнопку для запуска команды, когда ее родительский элемент списка уже выбран. Как ни странно, если кнопка внутри выбранного элемента списка щелкается правой кнопкой мыши, она должным образом вызывает свое контекстное меню, поэтому кнопка получает щелчки.
Заранее спасибо!