Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何强制加载上下文菜单?_C#_Wpf_Treeview_Contextmenu_Treeviewitem - Fatal编程技术网

C# 如何强制加载上下文菜单?

C# 如何强制加载上下文菜单?,c#,wpf,treeview,contextmenu,treeviewitem,C#,Wpf,Treeview,Contextmenu,Treeviewitem,我有一个wpf应用程序,其中有一个TreeView。 树视图有一个上下文菜单。 只有在右键单击其中一个TreeViewItem后,关联菜单才会开始加载。 (我是如何知道的-我在上下文菜单的加载事件中添加了一个日志。一旦我单击其中一个TreeView项,它就会写入日志消息。 这导致的问题是,上下文菜单在第一次被单击时似乎不起作用。实际上,第一次加载只需要时间。) 由于加载需要一两分钟,我希望在应用程序启动后立即开始加载。 上下文菜单没有“加载”操作。有什么办法可以做到这一点吗?为您的上下文菜单创建

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

为您的
上下文菜单创建一种样式,如下所示

 <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>


根据
树状视图中选定的项目更改
上下文菜单
项目资源

上下文菜单创建样式,如下所示

 <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>


更改
上下文菜单
项资源
基于树视图的选定项
上下文菜单项绑定到数据上下文中的内部属性(例如,如果我有一个名为Manager的属性,它有一个名为MenuItems的属性,它就绑定到Manager.MenuItems)。 内部属性只有一个get属性,当调用它时,它将计算可观察的菜单项集合。 因此,为了解决我的问题,我签署了TreeView的Loaded事件,并在那里运行了所有第一层次的TreeView项,每一个都是:

    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
第四行是在加载前计算菜单项。 最后两行必须放在一起,因为某种原因,如果没有一行就不行了。
希望这对某人有所帮助

上下文菜单项绑定到数据上下文中的一个内部属性(例如,如果我有一个名为Manager的属性,它有一个名为MenuItems的属性,它绑定到Manager.MenuItems)。 内部属性只有一个get属性,当调用它时,它将计算可观察的菜单项集合。 因此,为了解决我的问题,我签署了TreeView的Loaded事件,并在那里运行了所有第一层次的TreeView项,每一个都是:

    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
第四行是在加载前计算菜单项。 最后两行必须放在一起,因为某种原因,如果没有一行就不行了。
希望这对某人有所帮助

它有一个ItemContainerStyle和一个基于所选内容的ItemsSource。它在启动时仍然不加载项目源在启动时是否有任何项目??它有一个ItemContainerStyle和一个基于所选内容的ItemsSource。启动时仍不加载项目源在启动时是否有任何项目??