【问题标题】:How do I force a context menu to be loaded? [closed]如何强制加载上下文菜单? [关闭]
【发布时间】:2016-06-24 00:53:42
【问题描述】:

我有一个 wpf 应用程序,其中有一个 TreeView。 TreeView 有一个上下文菜单。 上下文菜单仅在我右键单击其中一个 TreeViewItem 后才开始加载。 (我是怎么知道的——我在上下文菜单的加载事件中添加了一个日志。一旦我单击其中一个 TreeViewItem,它就会写入日志消息。 这导致的问题是,似乎上下文菜单在第一次被单击时不起作用。实际上负载第一次只需要时间。) 由于加载需要一两分钟,我希望它在应用程序启动后立即开始加载。 上下文菜单没有“加载”操作。任何想法如何做到这一点?

【问题讨论】:

    标签: c# wpf treeview contextmenu treeviewitem


    【解决方案1】:

    上下文菜单项绑定到数据上下文中的内部属性(例如,如果我有一个名为 Manager 的属性,并且它有一个名为 MenuItems 的属性,它就绑定到 Manager.MenuItems)。 内部属性只有一个 get 属性,当调用它时,它会计算菜单项的可观察集合。 所以我做了什么来解决我的问题我签署了 TreeView 的 Loaded 事件,在那里我运行了所有第一个层次结构 TreeViewItems,对于我所做的每一个:

        item.IsSelected = true;
        item.Focus();
        item.IsOpen = true;
        var items = Manager.MenuItems; // Calculates the menu items (it's per item in my code so it doesn't look exactly the same
    

    第四行是在加载之前计算菜单项。 最后两条线必须放在一起,由于某种原因,如果没有一条,它就不起作用。 希望这可以帮助某人

    【讨论】:

      【解决方案2】:

      为您的context menu 创建一个样式,如下所示,

       <ContextMenu ItemsSource="{Binding ContextActions}">                    
           <ContextMenu.ItemContainerStyle>
                <Style TargetType="{x:Type MenuItem}" >
                      <Setter Property="Header" Value="{Binding Title}"/>
                      <Setter Property="ToolTip" Value="{Binding ToolTips}"/>
                      <Setter Property="Command" Value="{Binding ContextCommand}"/>
                      <Setter Property="Icon" Value="{StaticResource Icon}"/>
                      <Setter Property="CommandParameter" Value="{Binding CommandParameter}"/>
                 </Style>
           </ContextMenu.ItemContainerStyle>
       </ContextMenu>
      

      根据您在tree view中选择的项目更改context menuItemsSource

      【讨论】:

      • 它有一个 ItemContainerStyle 和一个 ItemsSource 基于选择的内容。它仍然没有在启动时加载
      • 您的物品来源在启动时有任何物品吗??
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多