WPF的默认行为ContextMenu是在用户右键单击时显示它.我希望在ContextMenu用户左键单击时显示.看起来这应该是一个简单的属性ContextMenu,但事实并非如此.
我操纵它,以便我LeftMouseButtonDown在代码隐藏中处理事件,然后显示上下文菜单.
我在我的项目中使用MVVM,这意味着我将DataTemplates用于具有上下文菜单的项目.摆脱代码隐藏并找到一种使用XAML中的触发器或属性显示上下文菜单的方法会更加优雅.
这个问题的任何想法或解决方案?
可能重复:
文件类型与应用程序的关联(C#)
我正在编写一个C#Windows应用程序来可视化和修改'.build'文件(nant脚本).我希望用户能够在Windows资源管理器中右键单击.build文件并选择"打开方式"选项以允许在我的应用程序中修改该文件.
为了使用这种机制,我的程序需要支持什么?我的程序可能需要对Windows执行上下文菜单支持?
我想知道是否有人能指出我关于这个主题的好文章/教程的方向.
右键单击后,我坚持要管理上下文菜单.实际上我需要为文件夹显示一些contextmenu项,为文件夹显示contextmenu的一些项.
单击文件夹上下文菜单将如下所示:
- 创建
- 去掉
- 改名
- 新
点击文件上下文菜单将如下所示:
- 创建
- 去掉
- 改名
点击后有没有办法管理这个菜单.我查看了文档和其他博客,但没有获得有用的内容.
你能指导我一些事情,以便我可以这样实施.
提前致谢
如果上下文菜单在xaml中是"硬编码的",则很容易添加子菜单.例如:
<ContextMenu>
<MenuItem Header="Comm1" Command="{Binding Blabla1}">
<MenuItem Header="SubComm1" Command="{Binding Blabla2}"></MenuItem>
</MenuItem>
<MenuItem Command="Comm2"></MenuItem>
<MenuItem Command="Comm3"></MenuItem>
</ContextMenu>
Run Code Online (Sandbox Code Playgroud)
这意味着,ContextMenu有三个元素(Comm1,Comm2和Comm3),Comm1有子菜单SubComm1.
我让ContextMenu更加灵活:
<ContextMenu ItemsSource="{Binding ContextMenuItemsSource}">
<ContextMenu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Header" Value="{Binding ContextMenuCommandHeader}"></Setter>
<Setter Property="Command" Value="{Binding ContextMenuCommand}"></Setter>
</Style>
</ContextMenu.ItemContainerStyle>
</ContextMenu>
Run Code Online (Sandbox Code Playgroud)
基本上我在ContextMenu中可以有任意数量的元素,任何元素都可以有任何命令.如何将子菜单添加到ContextMenu元素?
在我的OSX应用程序中,我有一个集合视图,它是一个子类NSCollectionView.
除了上下文菜单之外,我对这些事情都感到满意,我还想不通.
所以我想要的是:
我知道怎么做,NSOutlineView或者NSTableView不是为了集合视图.
我无法弄清楚如何获取项目的索引点击.
有没有人对我如何实现这个有任何想法?
任何形式的帮助都非常感谢!
每当您右键单击浏览器(或任何其他应用程序)的边缘时,上下文菜单将溢出窗口,但不会溢出屏幕.
我希望上下文菜单始终位于窗口边界,所以当我点击底边附近时,它应该显示顶部的菜单.假设窗口的尺寸总是大于上下文菜单.
这可能吗?如果没有,有任何解决方法吗?
PS我没有构建应用程序窗口,只是应用程序的查看器.

我有以下xaml:
<ContextMenu ItemsSource="{Binding TestItems}">
<ContextMenu.ItemTemplate>
<DataTemplate DataType="models:TestItemModel">
<MenuItem IsChecked="{Binding IsSelected}" Header="{Binding Header}" />
</DataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>
Run Code Online (Sandbox Code Playgroud)
TestItemModel类仅包含IsSelected布尔属性和Header字符串属性.
TestItems是TestItemModels的列表.
数据绑定到contextmenu,但它在UI中反映为MenuItem中的MenuItem(具有额外的边距,使菜单非常大).我可以通过将DataTemplate中的MenuItem更改为TextBox来解决这个问题,但是我不能再绑定IsSelected(我需要可视化属性).
我对此有几个问题:
我在网上搜索如何添加上下文菜单ListView.到目前为止,我发现了一个实际显示上下文的内容
<ListView>
...
RightTapped="ContactsListView_RightTapped" >
...
<ListView.Resources>
<MenuFlyout x:Name="allContactsMenuFlyout">
<MenuFlyout.Items>
<MenuFlyoutItem x:Name="Edit" Text="Edit"/>
<MenuFlyoutItem x:Name="Remove" Text="Remove" Click="Remove_Click"/>
</MenuFlyout.Items>
</MenuFlyout>
</ListView.Resources>
...
</ListView>
private void ContactsListView_RightTapped(object sender, RightTappedRoutedEventArgs e) {
ListView listView = (ListView)sender;
allContactsMenuFlyout.ShowAt(listView, e.GetPosition(listView));
}
private void Remove_Click(object sender, RoutedEventArgs e) {
}
Run Code Online (Sandbox Code Playgroud)
问题是我无法获得显示上下文菜单的项目.另一个问题是上下文菜单也显示在列表视图项之外(例如,在边框上).由于触发的事件是RightTapped,我不确定是否会在长按移动设备上显示上下文菜单.我无法测试它,因为我的模拟器当前不工作.因为它应该是通用的Windows应用程序,我期待一些非常简单有效的方法为ListView项目创建上下文菜单.
我有一个带有简单列表视图和上下文菜单的应用程序.在android 7之前,一切看起来都不错:
但机智android 7 ......
上下文菜单的位置是否有任何变化?
在ContextMenuShell扩展中创建文件后,如何在资源管理器中选择文件?
我使用IFileOperationAPI 创建了文件,并尝试IShellView::SelectItem()在IFileProgressSink::FinishOperations()回调中使用。但是文件选择仅会短暂闪烁,然后再次取消选择。我假设资源管理器注意到文件的某些更改并更新了视图。
我可以半可靠地等待(?)10毫秒FinishOperations后再调用IShellView::SelectItem使其工作,但是在文件操作后是否有更明智的选择文件的方法?