有谁知道为什么会产生XamlParseException"无法将类型'System.Windows.Controls.ContextMenu'的内容添加到'System.Object'类型的对象中":
<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas ClipToBounds="True"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="Remove" />
</ContextMenu>
</Setter.Value>
</Setter>
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
以下工作正常吗?
<ItemsControl>
<ItemsControl.Resources>
<ContextMenu x:Key="NodeContextMenu">
<MenuItem Header="Remove" />
</ContextMenu>
</ItemsControl.Resources>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas ClipToBounds="True"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="ContextMenu" Value="{StaticResource NodeContextMenu}" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud) 我花了大约3天试图让这个工作,但无济于事.
我是VS.NET可扩展性的新手,我发现很难调试我的问题.
我已经尝试过这里介绍的代码:Visual Studio加载项 - 向solution-explorer添加一个上下文菜单项
无法使它工作.调试它并没有抛出任何异常.另外,我宁愿使用AddIn而不是Package.
有谁知道:
提前致谢.
c# visual-studio-addins contextmenu visual-studio-2010 solution-explorer
我需要在finder中为文件图标添加一个上下文相关的菜单.所以基本上如果我右键单击,例如"filename.txt"图标,子菜单应弹出"打开","获取信息"等,但应该有一个额外的项目,例如"我的程序".如果用户选择"我的程序"菜单选项,系统将执行:"my_program.rb filename.txt".
我有32位Mac OS 10.6.
我检查了堆栈溢出,我有发布的解决方案,但他们有点困惑.首先,根据这个堆栈溢出文章,你必须"添加一个启用共享工具的服务",但这对我来说很困惑.什么是"服务"?这是一个特殊挂钩操作系统的程序吗?
还有一篇关于"提供服务"的苹果文章,但我再次对此感到困惑.ruby脚本可以算作"服务"吗?或者我必须在目标C中做一些奇怪的Cocoa事情来访问子菜单然后再参考那里的脚本?
有更简单的方法吗?也许是一个我尚未遇到的开源程序?
考虑简单的应用程序,即显示文件列表。我想显示上下文菜单,当用户单击文件或文件夹时,与用户在 Windows 资源管理器中单击鼠标右键(打开、重命名、编辑等)时相同。我不想创建自己的上下文菜单,我想显示 windows os 上下文菜单,可能使用某种 winapi。这应该只适用于 Windows 机器。
是否可以使用 Swing 或 SWT 或任何其他 UI 控件来实现它?
我想获取光标的当前记录,而不仅仅是ID,以便我可以操作上下文菜单.
我在这里看到这个示例,向您展示如何获取ID:
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case DELETE_ID:
AdapterView.AdapterContextMenuInfo info=
(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
delete(info.id);
return(true);
}
return(super.onOptionsItemSelected(item));
}
Run Code Online (Sandbox Code Playgroud)
这很棒,因为它允许我获取所单击的上下文菜单的相应SQLite数据库ID,这将允许我编写一个函数来进行查找.但我当然可以重用当前的光标吗?
我试过这样做:
Cursor c = (Cursor) this.getListAdapter().getItem((int) info.id);
String itemPriority = c.getInt(1);
Log.v(TAG, "Current item:" + itemPriority);
Run Code Online (Sandbox Code Playgroud)
但是光标线似乎只返回数据库的模式而不是我之后的记录.
请有人请说清楚.
编辑:感谢@azgolfer我找到了解决方案.我使用fillData()方法来填充适配器.通常,这是在没有变量的情况下声明的.我不得不用一个字段变量重新定义这个方法.在onContextItemSelected中使curstor适配器可见的代码的相关部分在这里:
private void fillData() {
Cursor itemsCursor = mDbHelper.fetchAllItemsFilter(mListId, mStatusFilter);
startManagingCursor(itemsCursor);
mItemAdaptor = new ItemAdapter(this, itemsCursor);
this.setListAdapter(mItemAdaptor);
}
Run Code Online (Sandbox Code Playgroud) 我们正在开发一个包含文本编辑器的Web应用程序.它是用HTML5 + Javascript编写的.
我们已成功向我们的网络应用添加了自定义菜单,但我们尚未成功添加Google文档中的复制和粘贴功能.根据我们的理解,这可以使用可以访问OS剪贴板的Flash来实现.但是,我们希望避免使用该技术并使用替代方案 - 我认为Google也不会使用Flash.
有人能指出我们有效的替代方法吗?
谢谢.
我有一个上下文菜单 - 问题是我需要它只在单击listviewitem时打开.现在,如果我点击列表视图中的任何位置或标题中,它将打开.
<ListView>
<ListView.ContextMenu>
<ContextMenu>
<MenuItem Header="More Info" Command="{Binding MoreInfo}" />
</ContextMenu>
</ListView.ContextMenu>
<ListView.View>
<GridView>
<!-- columns and stuff here -->
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
我已经尝试将ContextMenu添加为资源并将其应用为样式,但是这会破坏命令(单击"更多信息"应该打开一个对话框窗口,不会以这种方式工作)
<ListView.Resources>
<ContextMenu x:Key="ItemContextMenu">
<MenuItem Header="More Info" Command="{Binding MoreInfo}" Background="WhiteSmoke" />
</ContextMenu>
</ListView.Resources>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}" >
<Setter Property="ContextMenu" Value="{StaticResource ItemContextMenu}" />
</Style>
</ListView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)
所以不确定如何将上下文菜单限制为listviewitem并使命令有效.
我正在运行 Python 3.3.3(现在我在 Ubuntu 上,但我也在 Mac 和 Windows 上开发,我还没有测试过)。我有一个 Treeview 对象,它响应右键单击项目并根据您单击的内容显示上下文菜单......但我注意到,如果在原始菜单打开时右键单击其他地方,它只会打开另一个。
事实上,正常点击也不会隐藏它们。即使我关闭窗口,菜单仍然保持浮动。让它们消失的唯一方法是单击其中一个选项。
最终结果是这样的:

我的菜单代码如下:
def rightclick_listitem(self, event):
rowitem = self.sources.identify('item', event.x, event.y)
if rowitem == '':
print('Right clicked an empty space.')
return
# user right clicked something.
self.sources.selection_set(rowitem)
rcmenu = Menu(self.root, tearoff=0)
plugin_disabled=self.sources.item(rowitem, 'values')[0] == 'Disabled'
if plugin_disabled:
rcmenu.add_command(label='Plugin is disabled...',
command=self.plugin_disabled_click)
rcmenu.add_command(label='Plugin options',state='disabled' if plugin_disabled else 'active')
rcmenu.add_command(label='Uninstall plugin')
rcmenu.post(event.x_root, event.y_root)
Run Code Online (Sandbox Code Playgroud)
调用此代码的代码位于此处:
#RIGHTMOUSE is a variable that changes based on OS due to the way Mac OSX works
#sources …Run Code Online (Sandbox Code Playgroud) 我在.html示例中使用了contextMenu事件,当我长按DIV时它会被触发,但是现在它无法正常工作.在最新的IOS 8.2版本中有什么问题.这是示例代码,
<head>
<title></title>
<script src="Scripts/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#content").on("contextmenu", function () {
alert("CM");
});
});
</script>
</head>
<body>
<div id="content" style="height:300px; width:300px; background-color:gray;"></div>
</body>
Run Code Online (Sandbox Code Playgroud)
这是工作样本
请有人帮我这个.
当我单击图像时,它显示了菜单,但未显示图标。我尝试了两种方式:
为上下文菜单项设置图标的方法是什么?
Xml:
<Image Height="20" Width="20" Source="/CitiCall.WinClient;component/Images/user_icon.png" MouseDown="image1_MouseDown" Margin="0,0,4,6" HorizontalAlignment="Right" Name="image1" Stretch="Fill" VerticalAlignment="Top">
<Image.ContextMenu>
<ContextMenu>
<MenuItem Header="Reset password" Icon="/CitiCall.WinClient;component/Images/reset.png"/>
<!--<MenuItem.Icon>
<Image Source="/CitiCall.WinClient;component/Images/reset.png" ></Image>
</MenuItem.Icon>
</MenuItem>-->
<MenuItem Header="Edit Profile"/>
<MenuItem Header="Settings"/>
<MenuItem Header="About us"/>
</ContextMenu>
</Image.ContextMenu>
</Image>
Run Code Online (Sandbox Code Playgroud)
Xamal.cs:
private void image1_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left)
{
Image image = sender as Image;
ContextMenu contextMenu = image.ContextMenu;
contextMenu.PlacementTarget = image;
contextMenu.IsOpen = true;
}
}
Run Code Online (Sandbox Code Playgroud)