WPF的默认行为ContextMenu是在用户右键单击时显示它.我希望在ContextMenu用户左键单击时显示.看起来这应该是一个简单的属性ContextMenu,但事实并非如此.
我操纵它,以便我LeftMouseButtonDown在代码隐藏中处理事件,然后显示上下文菜单.
我在我的项目中使用MVVM,这意味着我将DataTemplates用于具有上下文菜单的项目.摆脱代码隐藏并找到一种使用XAML中的触发器或属性显示上下文菜单的方法会更加优雅.
这个问题的任何想法或解决方案?
我正在尝试在WinForms应用程序中显示标准文件/目录上下文菜单 - 我想让用户在我的应用程序中使用资源管理器中的文件.
应该有两种选择
你能指点我正确的方向吗?谢谢
在我的应用程序中,我有一个DataGridView用于配置一些选项.我们的想法是您可以在第一列中输入您想要的任何文本,但如果您右键单击它将为您提供明确支持的值.我需要它是一个文本框而不是下拉列表,因为我需要支持编辑无效(或旧)配置.
我想要的是用户右键单击字段名称列,并根据这是什么类型的配置有一个有效的上下文菜单.因此,我编写了以下事件
private void grvFieldData_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
// If this is a right click on the Field name column, create a context menu
// with recognized options for that field
if (e.Button == MouseButtons.Right && grvFieldData.Columns[e.ColumnIndex].Name == "clmFieldName")
{
ContextMenu menu = new ContextMenu();
if (_supportedDataGrids.ContainsKey((cmbDataGrid.SelectedItem as DataGridFieldList).GridName))
{
// Loop through all the fields and add them to the context menu
List<string> fields = _supportedDataGrids[((cmbDataGrid.SelectedItem as DataGridFieldList).GridName)];
fields.Sort();
foreach (string field in fields)
menu.MenuItems.Add(new MenuItem(field)); …Run Code Online (Sandbox Code Playgroud) 我的Listview如下
Header1 Header2 Header3
Item1 Item2 Item3
Item1 Item2 Item3
Item1 Item2 Item3
Run Code Online (Sandbox Code Playgroud)
我已经编写了一个代码来显示context menu点击,list view但它也显示在Context menu上面headers.我Context menu只需要在用户点击时显示Items,list view任何人都可以帮助我
这是我目前编写的代码
private void listView1_MouseClick(object sender, MouseEventArgs e)
{
contextMenuStrip1.Show(listView1, e.Location);
}
Run Code Online (Sandbox Code Playgroud) 我在SVG图形中使用Rodney Rehm 的jQuery contextMenu.它适用于基本用法.
但是我需要获取SVG-Element的ID(或任何其他属性),它触发上下文菜单,在上下文菜单的项目列表中使用它来获取动态项目名称.
我使用简单上下文菜单演示,现在想要用动态菜单替换这些静态菜单项,具体取决于单击的SVG元素的ID.
在我的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项目创建上下文菜单.
在ContextMenuShell扩展中创建文件后,如何在资源管理器中选择文件?
我使用IFileOperationAPI 创建了文件,并尝试IShellView::SelectItem()在IFileProgressSink::FinishOperations()回调中使用。但是文件选择仅会短暂闪烁,然后再次取消选择。我假设资源管理器注意到文件的某些更改并更新了视图。
我可以半可靠地等待(?)10毫秒FinishOperations后再调用IShellView::SelectItem使其工作,但是在文件操作后是否有更明智的选择文件的方法?