WPF 以样式声明上下文菜单
WPF Declare ContextMenu in Style
我为 ListViewItem
和 ContextMenu
创建了样式,这样当我右键单击 ListViewItem
时,我可以通过 ContextMenu
delete/remove ].
<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; }
}
尝试将 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>
我为 ListViewItem
和 ContextMenu
创建了样式,这样当我右键单击 ListViewItem
时,我可以通过 ContextMenu
delete/remove ].
<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; }
}
尝试将 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>