本文参考自如下链接:
WPF的ContextMenu的绑定方式
WPF中listview控件绑定右键菜单命令

ContextMenu为何不能正常绑定

在WPF中,ContextMenu和ToolTip一样都是弹出层,与VisualTree已经分离了,只不过ToolTip在WPF中有进行特殊处理,所以可以正常绑定。

我的代码,在ListView中右键菜单中添加清空按钮,实现清空功能:

<ListView x:Name="LbLog" ItemsSource="{Binding LbLogItems}">
    <ListView.ContextMenu>
        <ContextMenu>
            <MenuItem
                Command="{Binding AssembledMsgListViewItemCopyCommand}"
                CommandParameter="{Binding PlacementTarget.SelectedItem, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
                FontFamily="微软雅黑"
                FontWeight="UltraBold"
                Header="复制报文" />
            <MenuItem
                Command="{Binding LogAssembledMsgClearCommand}"
                FontFamily="微软雅黑"
                FontWeight="UltraBold"
                Header="清空列表" />
        </ContextMenu>
    </ListView.ContextMenu>
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="BorderThickness" Value="0" />
            <Setter Property="Margin" Value="0,5,0,0" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListViewItem">
                        <Border
                            x:Name="border"
                            Background="White"
                            BorderBrush="#D291BC"
                            BorderThickness="0"
                            CornerRadius="10">
                            <ContentPresenter />
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="border" Property="BorderThickness" Value="3" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.ItemTemplate>
        <DataTemplate>
            <materialDesign:TransitioningContent OpeningEffect="{materialDesign:TransitionEffect Kind=SlideInFromRight}">
                <Grid Height="35">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="auto" />
                        <ColumnDefinition Width="auto" />
                        <ColumnDefinition Width="auto" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <TextBlock
                        Grid.Column="0"
                        Margin="5,0,0,0"
                        VerticalAlignment="Center"
                        FontSize="16"
                        FontWeight="UltraBold"
                        Text="{Binding TimeStamp}" />
                    <materialDesign:PackIcon
                        Grid.Column="1"
                        Width="24"
                        Height="24"
                        Margin="5,0,0,0"
                        HorizontalAlignment="Center"
                        VerticalAlignment="Center"
                        HorizontalContentAlignment="Center"
                        Foreground="{Binding ForeColor}"
                        Kind="{Binding IconKind}" />
                    <TextBlock
                        Grid.Column="2"
                        HorizontalAlignment="Center"
                        VerticalAlignment="Center"
                        FontSize="16"
                        FontWeight="UltraBold"
                        Foreground="{Binding ForeColor}"
                        Text="{Binding Type}" />
                    <TextBlock
                        Grid.Column="3"
                        Margin="5,0,5,0"
                        VerticalAlignment="Center"
                        FontSize="16"
                        FontWeight="UltraBold"
                        IsHitTestVisible="False"
                        Text="{Binding Msg}" />
                </Grid>
            </materialDesign:TransitioningContent>

        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

下面一行代码是重点,可以将右键所选中的Item传递到ContextMenu中:
CommandParameter="{Binding PlacementTarget.SelectedItem, RelativeSource={RelativeSource AncestorType=ContextMenu}}"