如何允许上下文菜单进行多项选择?

时间:2014-02-25 08:43:45

标签: wpf xaml mvvm checkbox contextmenu

对于标签,我有一个要在上下文菜单中显示的项目列表,可以选择多个项目。 它可以是上下文菜单中每个项目的复选框吗?

以下是我目前的xaml代码:

<Label Content="{Binding Count}">
    <Label.ContextMenu>
        <ContextMenu ItemsSource="{Binding Items}" >
            <ContextMenu.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Name}" />
                </DataTemplate>
            </ContextMenu.ItemTemplate>
        </ContextMenu>
    </Label.ContextMenu>
</Label>

其他问题:关于删除复选框前面的空隙,我已经使用了@Rohit回复,但它仍然在复选框项后面有一行。可以删除吗?

1 个答案:

答案 0 :(得分:1)

是的,你可以拥有checkBox。只需将TextBlock替换为CheckBox

<ContextMenu ItemsSource="{Binding Items}" >
  <ContextMenu.ItemTemplate>
    <DataTemplate>
      <CheckBox Content="{Binding Name}" />
    </DataTemplate>
  </ContextMenu.ItemTemplate>
</ContextMenu>

更新评论

  

如何删除复选框前面的空白区域?

首先请不要在评论中提出跟进问题,因为这里的大众观众无法看到这些问题。

现在提出您的问题 - 这是正在应用的ContextMenu的默认模板。为了避免您覆盖ContextMenu的<{1}} 。如果感兴趣,请参考here中的模板(根据您的需要进行修改)

然而,通过 Template 来快速而肮脏地实现这一目标:

specifying negative left margin