1

我将 WPF 与 Caliburn 和 MVVM 模式一起使用,并且正在尝试设置动态上下文菜单。

目前我们有一个上下文菜单,它的项目绑定到 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()

当前系统适用于大多数情况,但有一些边缘情况表明我们最好在右键单击事件后动态生成列表。

所以我的问题是,当用户右键单击时,任何人都可以帮助我以最佳方式调用更新方法(或编写将被调用的替代方法)。任何有关如何做到这一点的帮助将不胜感激。

谢谢

4

1 回答 1

1

就个人而言,我非常喜欢使用OnPropertyChanged()from IPropertyNotifyChanged。这样,您可以创建一个在右键单击调用时执行的命令OnPropertyChanged()。由于您使用的是 MVVM,因此您必须自己对如何将事件实现为命令进行一些研究,可以在此处此处找到起点。或者,您可以通过 CommandParameter 绑定获得创意并在您的命令中使用它。

希望有帮助!

于 2011-08-05T02:52:47.947 回答