WPF:为 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>

只需在您的样式中添加另一个二传手即可设置 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>

最新更新