2011-08-05 137 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绑定获得创意,并在您的命令中使用它。

希望有帮助!