WPF在菜单显示之前更新上下文菜单项
本文关键字:更新 上下文 菜单项 菜单 显示 WPF | 更新日期: 2023-09-27 18:04:46
我正在使用WPF与Caliburn和MVVM模式,我试图建立一个动态上下文菜单。
目前我们有一个上下文菜单,它的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()
当前的系统在大多数情况下工作得很好,但有一些边缘情况表明,我们将更好地在右键单击事件后动态生成列表。
所以我的问题是,谁能帮我用最好的方式来调用更新方法(或编写一个替代方法将被调用),当用户右键单击。如果能提供任何帮助,我将不胜感激。
谢谢
就我个人而言,我非常喜欢从IPropertyNotifyChanged
中使用OnPropertyChanged()
。通过这种方式,您可以创建一个命令,通过右键单击调用OnPropertyChanged()
来执行。由于您使用的是MVVM,因此您必须自己做一些关于如何将事件作为命令实现的研究,可以在这里或这里找到一个起点。或者,您可以创造性地使用CommandParameter绑定,并在命令中使用它。
希望有帮助!