我正在使用带有Caliburn和MVVM模式的WPF,我正在尝试设置动态上下文菜单。
目前我们有一个上下文菜单,其中的项目绑定到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()
当前系统适用于大多数情况,但有一些边缘情况表明我们可以更好地在右键单击事件后动态生成列表。
所以我的问题是,当用户右键单击时,任何人都可以帮助我调用更新方法(或编写一个可以调用的替代方法)的最佳方法。任何帮助如何做到这一点将不胜感激。
由于
答案 0 :(得分:1)
就个人而言,我非常喜欢使用IPropertyNotifyChanged
中的OnPropertyChanged()
。这样,您可以创建一个命令,通过右键单击调用OnPropertyChanged()
来执行。您将不得不自己做一些关于如何将事件作为命令实现的研究,因为您使用的是MVVM,可以找到here或here的起点。或者,您可以使用CommandParameter绑定获得创意,并在命令中使用它。
希望有所帮助!