【问题标题】:WPF update context menu items before menu displayWPF 在菜单显示之前更新上下文菜单项
【发布时间】:2011-08-05 18:13:15
【问题描述】:

我正在使用带有 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()

当前系统在大多数情况下都能正常工作,但有一些边缘情况表明我们最好在右键单击事件后动态生成列表。

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

谢谢

【问题讨论】:

    标签: c# wpf mvvm contextmenu caliburn


    【解决方案1】:

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

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多