如何在WPF中的listviewitems中添加contextmenu?

时间:2017-10-09 16:33:10

标签: c# .net xml visual-studio xaml

所以我一直试图在我的listviewitems中添加一个上下文菜单,但我无法弄明白。 我设法弄清楚如何为while lsitview控件做这件事,但我似乎无法弄清楚如何为实际的listviewitems做这件事。

我做了这个

<ContextMenu>
<MenuItem Header="Remove"/>
</ContextMenu>

给我的listviewcontrol添加了contextmenu但不是我想要的,我希望它能用于listviewitems。

<ListView Margin="10,36,520,10" ScrollViewer.HorizontalScrollBarVisibility="Hidden" BorderBrush="Black" Padding="-1, -1, 1, 0" Background="Transparent" BorderThickness="1.000001" Name="lvUsers"  Style="{DynamicResource ListViewStyle1}">
            <ListView.ItemContainerStyle>
                <Style TargetType="{x:Type ListViewItem}">
                    <Setter Property="Background" Value="Transparent" />
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type ListViewItem}">
                                <Border
                         BorderBrush="Transparent"
                         BorderThickness="0"
                         Background="{TemplateBinding Background}">

                                    <GridViewRowPresenter HorizontalAlignment="Stretch" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Width="Auto" Margin="0" Content="{TemplateBinding Content}"/>
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>

                    </Setter>

                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Foreground" Value="White" />
                            <Setter Property="Background" Value="#696969" />
                            <Setter Property="BorderBrush" Value="#696969" />
                            <Setter Property="BorderThickness" Value="0" />
                        </Trigger>

                        <Trigger Property="IsSelected" Value="True">
                            <Setter Property="Foreground" Value="White" />
                            <Setter Property="Background" Value="#696969" />
                            <Setter Property="BorderBrush" Value="#696969" />
                            <Setter Property="BorderThickness" Value="0" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </ListView.ItemContainerStyle>
            <ListView.View>
                <GridView ColumnHeaderContainerStyle="{StaticResource GridViewColumnHeaderStyle1}">
                    <GridViewColumn x:Name="GridViewColumnName" Header="Name" Width="165">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <Image x:Name="Image_GridViewColumnName" Width="16" Height="16" Source="C:\Users\developer\source\repos\PortforwardWPF\PortforwardWPF\Images\minecraft.png" />
                                    <Label Content="{Binding Username}" Visibility="Visible" />
                                </StackPanel>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>

            </ListView.View>
        </ListView>

1 个答案:

答案 0 :(得分:2)

选项#1:

    <Style TargetType="{x:Type ListViewItem}">
        <Setter Property="ContextMenu">
            <Setter.Value>
                <ContextMenu />
            </Setter.Value>
        </Setter>
        <Setter Property="Background" Value="Transparent" />

选项#2

            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ListViewItem}">
                    <Border
                        BorderBrush="Transparent"
                        BorderThickness="0"
                        Background="{TemplateBinding Background}">
                        <Border.ContextMenu>
                            <ContextMenu />
                        </Border.ContextMenu>