我正在寻找一种方法——如果可能的话——从 Windows Phone 7 的 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>
现在,并非绑定集合中的所有项目都有与之关联的网站,对于那些项目,我希望删除带有ONLINE标记的 MenuItem (即最后一个 MenuItem)。
但我找不到实现这一目标的方法。
我还考虑过以编程方式添加 ContextMenu 和所有 MenuItem,以便有条件地添加每个 MenuItem,但我似乎找不到诸如 OnItemDataBound 或 OnDataBinding等事件。
谁能帮我吗?
更新:更具体地说,我不想从ListBox 中每个绑定项目的 ContextMenu 中删除 MenuItem,我只想在绑定对象不符合条件时删除 ListBox中特定项目上的 MenuItem。
假设我的 ListBox 包含 3 个绑定项:ListItem_1、ListItem_2、ListItem_3
现在,假设绑定到 ListItem_2 的对象的属性之一为 NULL;在这种情况下,ListItem_2 应从其 ContextMenu 中删除其中一个 MenuItem 控件,而 ListItem_1 和 ListItem_3 仍应具有此 MenuItem。
理想的是一个事件,它允许我在绑定每个项目时捕获它,并且它还公开 ContextMenu。ListBox.Items 集合只是返回我指定为数据源的相同对象集合,而 ListBoxItems 的集合会更有用 - 这是否存在?