0
刪除菜單項

我正在尋找一種方法 - 如果可能的話 - 從文本菜單中的Windows Phone刪除菜單項控制的7我可以從文本菜單在WP7

這裏是我的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最後一個菜單項)刪除菜單項。

但我無法找到實現此目的的方法。

我也想加入的ContextMenu和所有的MenuItems編程,這樣我可以有條件地添加菜單項各的,但我似乎無法找到一個事件,如OnItemDataBound或OnDataBinding,

任何人都可以幫我嗎?

更新:只是爲了更具體,我不想從文本菜單上綁定項在列表框中刪除一個菜單項,我只希望到時在列表框卸下具體項的菜單項綁定對象失敗的條件。

比方說,我的列表框包含3個綁定物品: ListItem_1, ListItem_2, ListItem_3

現在,讓我們說,勢必ListItem_2對象都有其屬性爲NULL之一;在這種情況下,ListItem_2應該從其ContextMenu中刪除一個MenuItem控件,而ListItem_1和ListItem_3仍應具有此MenuItem。

什麼是理想的事件,它允許我捕獲每個項目,因爲它被綁定,並且還暴露了ContextMenu。 ListBox.Items集合簡單地返回與我分配給數據源的對象相同的集合,而ListBoxItems集合會更有用 - 這是否存在?

回答

2

首先,提供一個名稱的上下文菜單,以便能夠從後臺代碼很容易檢索:

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

從那裏,你可以訪問使用this.ContextMenu.Items的項目。所以只需刪除那些你不需要的東西了:

var item = this.ContextMenu.Items.OfType<MenuItem>().First(m => (string)m.Tag == "ONLINE"); 

this.ContextMenu.Items.Remove(item); 
+0

感謝您的回覆,KooKiz。不過,我想從一些但不是全部的綁定項中移除MenuItem。我知道如何簡單地刪除一個MenuItem;我希望在這裏實現的是有條件地爲ListBox中的每個綁定項目呈現/移除MenuItem。 換句話說,一些綁定的物品有它,其他的沒有它。 – awj

+0

您是否嘗試過使用上下文菜單的'Loaded'事件? –

+0

我已經添加了Loaded事件並插入了您的代碼,但無法獲取ContextMenu:http://screencast.com/t/fEZ6lpjKXnd我懷疑這是因爲有一個ContextMenu實例用於採集。我已經將原始問題修改爲更具體。 – awj

相關問題