WPF объявляет ContextMenu в стиле - PullRequest
       7

WPF объявляет ContextMenu в стиле

0 голосов
/ 22 февраля 2019

Я создал стиль для ListViewItem с ContextMenu, чтобы при нажатии правой кнопкой мыши на ListViewItem я мог удалить / удалить его с помощью ContextMenu.

<Style x:Key="GridViewCheckoutColumnStyle" TargetType="{x:Type ListViewItem}">
        <Setter Property="ContextMenu">
            <Setter.Value>
                <ContextMenu>
                    <MenuItem Header="Remove" Click="ListViewItem_ContextMenuClick"/>
                </ContextMenu>
            </Setter.Value>
        </Setter>
    </Style>

И мой ListView:

<ListView Name="ListViewCheckoutTable" Margin="20,20,20,0" VerticalAlignment="Top" Height="200" FontSize="14" ItemContainerStyle="{StaticResource GridViewCheckoutColumnStyle}">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Quantity" Width="80" DisplayMemberBinding="{Binding Quantity}"/>
            <GridViewColumn Header="Name" Width="150" DisplayMemberBinding="{Binding Name}"/>
            <GridViewColumn Header="Price" Width="70" DisplayMemberBinding="{Binding Price}"/>
        </GridView>
    </ListView.View>
</ListView>

К сожалению, этот код выдает ошибку всякий раз, когда я пытаюсь его запустить.Я получаю недопустимое исключение приведения, говорящее о том, что оно не может преобразовать MenuItem в Grid.

Я должен также сказать, что мой ListView заполнен MenuItems

public class MenuItem 
{
    public int Quantity { get; set; }
    public int Id { get; set; }
    public string Name { get; set; }
    public int Price { get; set; }
}

1 Ответ

0 голосов
/ 22 февраля 2019

Попробуйте определить ContextMenu как отдельный ресурс:

<ContextMenu x:Key="contextMenu" x:Shared="False">
    <MenuItem Header="Remove" Click="ListViewItem_ContextMenuClick"/>
</ContextMenu>
<Style x:Key="GridViewCheckoutColumnStyle" TargetType="{x:Type ListViewItem}">
    <Setter Property="ContextMenu" Value="{StaticResource contextMenu}" />
</Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...