2009-10-16 106 views
20

可能重複:
Specify Command for MenuItem in a DataTemplateWPF ContextMenu與ItemsSource - 如何綁定到每個項目中的命令?

我有對象表示菜單項(的ViewModels)的集合。它們中的每一個都有一個命令,我希望在單擊MenuItem時執行該命令。

如果我想要做靜態菜單,我不喜歡這樣寫道:

<ContextMenu> 
    <MenuItem Header="{Binding Text1}" Command={Binding Command1}> 
    <MenuItem Header="{Binding Text2}" Command={Binding Command2}> 
</ContextMenu> 

但是當我不知道事先的項目(他們來自一個集合),我需要指定的ContextMenu .ItemsSource - 並將文本放入ItemTemplate中。

<ContextMenu ItemsSource="{Binding MyMenuItems}"> 
    <ContextMenu.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Text2}" /> <!-- But where to put Command binding? TextBlock.Command makes no sense, and we have no access to MenuItem! --> 
     </DataTemplate> 
    </ContextMenu.ItemTemplate> 
</ContextMenu> 

但是,這種方式,我沒有地方綁定一個命令 - 因爲我無法獲得每一行的MenuItem!

有什麼建議嗎?感謝你們!

+0

重複的[http://stackoverflow.com/questions/898852/specify-command-for-menuitem-in-a-datatemplate](http://stackoverflow.com/questions/898852/specify-command-換菜單項-IN-A-DataTemplate中)。 –

回答

29
<ContextMenu.ItemContainerStyle> 
    <Style TargetType="MenuItem"> 
    <Setter Property="Command" Value="{Binding AssociatedCommand}" /> 
    </Style> 
</ContextMenu.ItemContainerStyle> 

其中AssociatedCommand是包含ICommand的viewmodel對象的屬性。

+0

謝謝,我已經在鏈接的線程中找到了相同的答案... –

+5

如何分隔兩個菜單項的命令。 – TrustyCoder

+0

如何分隔多個菜單項的命令?讓我們說「添加」和「刪除」。 –

相關問題