既然你有一個項目驅動指揮我會建議使用像這樣的類似威爾的第二個建議的東西的集合:
<MenuItem
Command="{Binding MenuCommand}"
CommandParameter="{Binding}"
Header="{Binding DisplayText}" />
在視圖模型方面,你可以使用一個DelegateCommand或RelayCommand掛鉤的處理器方法。這使您可以檢查菜單項的數據,並根據其中的內容做所需的任何操作。
public DelegateCommand<MyMenuObject> MenuCommand { get; private set; }
public ViewModel()
{
MenuCommand = new DelegateCommand<MyMenuObject>(MenuCommandExecuted);
}
public void MenuCommandExecuted(MyMenuObject parameter)
{
// do something based on the parameter object
}
您還需要爲pass MenuCommand到您的收藏項目一個ICommand屬性使用簡單的綁定形式上方或更改命令結合使用的東西像的RelativeSource FindAncestor樹仰望父用於MenuCommand的DataContext(ViewModel)。使用此方法可以靈活地添加或刪除集合中的項目,而無需進行任何UI更改以支持新的項目集合。
Prism DelegateCommand
RelayCommand
OK,感謝您的答覆。我忘了提到菜單項顯示的文本被綁定到ViewModel,也就是ObervableCollection。這當然會排除2號。 我不知道我完全理解No.1嗎?我創建了一個實現ICommand接口的命令,但是包含的文本是如何傳遞給命令的呢? 再次感謝 – 2010-04-30 13:03:12
@jon我假設接受的答案向你清楚。 – Will 2010-05-01 14:40:04