2011-08-05 178 views
1

我正在使用WPF與Caliburn和MVVM模式,我試圖建立一個動態的上下文菜單。菜單顯示之前的WPF更新上下文菜單項

當前我們有一個上下文菜單,它的Items綁定到ViewModel上的BindableCollection。

<UserControl.ContextMenu> 
     <ContextMenu ItemsSource="{Binding AvailableActions}" 
         actions:Action.TargetWithoutContext="{Binding}" 
         ItemContainerStyleSelector="{StaticResource NamedActionStyleSelector}"/> 
</UserControl.ContextMenu> 
public BindableCollection<NamedAction> AvailableActions { get; set; } 

這BindableCollection在某些情況下,程序的運行過程中的方法(同樣在視圖模型)更新:

private void UpdateAvailableActions() 

當前系統適用於大多數情況,但有一些邊緣案例表明我們會更好地在右鍵單擊事件之後動態生成列表。

所以我的問題是,任何人都可以幫助我調用更新方法(或寫一個替代方法將被調用),當用戶右鍵單擊的最佳方式。任何幫助如何做到這一點將不勝感激。

感謝

回答

1

個人而言,我使用OnPropertyChanged()IPropertyNotifyChanged的忠實粉絲。通過這種方式,您可以創建一個通過右鍵點擊執行的命令,該命令調用OnPropertyChanged()。由於您使用的是MVVM,所以您將不得不對自己想要如何實現事件做一點研究,可以從herehere找到起點。或者,您可以通過CommandParameter綁定獲得創意,並在您的命令中使用它。

希望有幫助!