WPF:为 ListViewItem 添加上下文菜单

WPF: Add ContextMenu for ListViewItem

所以这是我的 ListView:

<ListView Name="lvFiles"
          ItemContainerStyle="{StaticResource ListViewItemDefaultStyle}"/>

样式(这个style在另一个文件中:ListViewItem.xaml):

<Style x:Key="ListViewItemDefaultStyle" TargetType="{x:Type ListViewItem}">
        <Setter Property="Foreground" Value="Gainsboro"/>
        <Setter Property="SnapsToDevicePixels" Value="True"/>
        <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
        <!--<Setter Property="FontFamily" Value="Calibri"/>-->
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ListViewItem}">
                    <Border
                        BorderBrush="{TemplateBinding BorderBrush}" 
                        BorderThickness="{TemplateBinding BorderThickness}" 
                        Background="{TemplateBinding Background}" 
                        CornerRadius="2" SnapsToDevicePixels="true">
                        <Border
                            x:Name="InnerBorder"
                            BorderThickness="1"
                            CornerRadius="1">
                            <Grid>
                                <Grid.RowDefinitions>
                                    <RowDefinition MaxHeight="11"/>
                                    <RowDefinition/>
                                </Grid.RowDefinitions>
                                <GridViewRowPresenter
                                    Grid.RowSpan="2"
                                    SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                    VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                            </Grid>
                        </Border>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

        <Style.Triggers>

        </Style.Triggers>
    </Style>

现在我想添加这个 ContexMenu:

  <ContextMenu>
        <MenuItem Name="menuItemClose"
                  Header="Exit"
                  Click="menuItemClose_Click"/>
        <MenuItem Name="menuItemOpen"
                  Header="Open"
                  Click="menuItemOpen_Click"/>
    </ContextMenu>

所以首先我需要在哪里定义这个 ContextMenu ?

以及如何将其添加到我的 ListView >

只需在您的样式中添加另一个 setter 即可设置 ContextMenu 属性:

 <Setter Property="ContextMenu">
            <Setter.Value>
                <ContextMenu>
                    <MenuItem Name="menuItemClose"
                              Header="Exit"
                              Click="menuItemClose_Click"/>
                    <MenuItem Name="menuItemOpen"
                              Header="Open"
                              Click="menuItemOpen_Click"/>
                </ContextMenu>
            </Setter.Value>
        </Setter>