Windows phone 7 我可以从WP7中的ContextMenu中删除MenuItem吗

Windows phone 7 我可以从WP7中的ContextMenu中删除MenuItem吗,windows-phone-7,data-binding,listbox,contextmenu,windows-phone-7.1,Windows Phone 7,Data Binding,Listbox,Contextmenu,Windows Phone 7.1,我正在寻找一种方法——如果可能的话——从WindowsPhone7的ContextMenu中删除MenuItem控件 以下是我的XAML的简化版本: <ListBox> <ListBox.ItemTemplate> <DataTemplate> <StackPanel> [ -- Content -- ] <toolkit:ContextMenuService.Conte

我正在寻找一种方法——如果可能的话——从WindowsPhone7的ContextMenu中删除MenuItem控件

以下是我的XAML的简化版本:

<ListBox>
<ListBox.ItemTemplate>
    <DataTemplate>
        <StackPanel>
            [ -- Content -- ]
            <toolkit:ContextMenuService.ContextMenu>
                <toolkit:ContextMenu>
                    <toolkit:MenuItem Header="view attributes" Tag="ATTRIBUTES" Click="ViewSelectedResultAttributes" />
                    <toolkit:MenuItem Header="view groups" Tag="GROUPS" Click="ViewSelectedResultGroups" />
                    <toolkit:MenuItem Header="view webpage" Tag="ONLINE" Click="ViewWebPage" />
                </toolkit:ContextMenu>
            </toolkit:ContextMenuService.ContextMenu>
        </StackPanel>
    </DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

[--内容--]
现在,并非绑定集合中的所有项目都有与其关联的网站,对于这些项目,我希望删除带有在线标记的菜单项(即最后一个菜单项)

但我找不到实现这一目标的方法

我还想过以编程方式添加ContextMenu和所有MenuItems,这样我就可以有条件地添加每个MenuItem,但似乎找不到OnItemDataBinding或OnDataBinding等事件

有人能帮我吗

更新:更具体地说,我不想从列表框中每个绑定项的ContextMenu中删除MenuItem,我只想在绑定对象出现故障时删除列表框中特定项的MenuItem

假设我的列表框包含3个绑定项: 清单项目1, 清单项目2, 清单项目3

现在,假设绑定到ListItem_2的对象的一个属性为NULL;在这种情况下,ListItem_2应删除其ContextMenu中的一个MenuItem控件,而ListItem_1和ListItem_3仍应具有此MenuItem


理想的情况是一个事件,它允许我在绑定每个项目时捕获每个项目,并公开ContextMenu。ListBox.Items集合只返回我分配给数据源的相同对象集合,而ListBoxItems集合(例如ListBoxItems)则更有用-是否存在此集合?

首先,为上下文菜单指定一个名称,以便能够从后面的代码中轻松检索它:

<toolkit:ContextMenu x:Name="ContextMenu">

谢谢你的回复,库奇。但是,我想从一些(而不是所有)绑定项中删除MenuItem。我知道如何简单地删除菜单项;我希望在这里实现的是有条件地呈现/删除列表框中每个绑定项的菜单项。换句话说,有些绑定项有,有些绑定项没有。我添加了加载的事件并插入了代码,但无法获取ContextMenu:我怀疑这是因为集合中的每个绑定项都有ContextMenu实例。我已将原始问题修改为更具体的问题。使用事件时,
sender
包含触发事件的对象。在你的例子中,上下文菜单。只需投射
sender
来检索它:
var contextMenu=(contextMenu)sender明白了!很抱歉,KooKiz,我误读了您之前的评论,之前已将加载的事件添加到列表框,而不是ContextMenu。一旦我把它读好,一切就都明白了。谢谢
var item = this.ContextMenu.Items.OfType<MenuItem>().First(m => (string)m.Tag == "ONLINE");

this.ContextMenu.Items.Remove(item);