我有一组表示菜单项的对象(viewmodels).当单击MenuItem时,每个命令都要执行.
如果我想静态地进行菜单,我这样做:
<ContextMenu>
<MenuItem Header="{Binding Text1}" Command={Binding Command1}>
<MenuItem Header="{Binding Text2}" Command={Binding Command2}>
</ContextMenu>
Run Code Online (Sandbox Code Playgroud)
但是当我事先不知道这些项目(它们来自集合)时,我需要分配ContextMenu.ItemsSource - 并将文本放入ItemTemplate.
<ContextMenu ItemsSource="{Binding MyMenuItems}">
<ContextMenu.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Text2}" /> <!-- But where to put Command binding? TextBlock.Command makes no sense, and we have no access to MenuItem! -->
</DataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>
Run Code Online (Sandbox Code Playgroud)
但是,这样,我无法将Command绑定到 - 因为我无法获取每一行的MenuItem!
请问有什么建议吗?感谢你们!
在我的应用程序中,我在右键单击对象时使用弹出菜单项.我使用以下代码动态构建此菜单:
ContextMenuStrip menu = new ContextMenuStrip();
menu.Items.Add(new ToolStripMenuItem("Item1", aNiceImage, someFunction));
menu.Items.Add(new ToolStripMenuItem("Item2", alsoNiceImage, someOtherFunction));
Run Code Online (Sandbox Code Playgroud)
现在,我想以粗体显示其中一个菜单项(由Windows用户体验指南推荐),以指示双击对象时哪个操作对应.
我该怎么做呢?
我正在使用jsTree 3.0.0,我需要通过以下方式之一修改上下文:
我尝试了几种方法但没有任何效果.例如,Uncaught TypeError: Object [object global] has no method 'create'当我单击"创建"时,这将返回.
"contextmenu":{
"items": function($node) {
return {
createItem : {
"label" : "Create New Branch",
"action" : function(obj) { this.create(obj); alert(obj.text())},
"_class" : "class"
},
renameItem : {
"label" : "Rename Branch",
"action" : function(obj) { this.rename(obj);}
},
deleteItem : {
"label" : "Remove Branch",
"action" : function(obj) { this.remove(obj); }
}
};
}
},
Run Code Online (Sandbox Code Playgroud)
如果我尝试添加一个项目,如下一个示例所示,我将松开默认菜单项:
items : {
"create_folder" : {
"separator_before" : …Run Code Online (Sandbox Code Playgroud) 我正在使用Angular2构建一个交互式Web应用程序,我正在寻找一种方法来捕获角度组件的右键单击.我还需要阻止右键单击显示浏览器上下文菜单,以便显示我自己的自定义上下文菜单.
我知道在角度1中,您必须创建一个自定义指令来捕获右键单击事件.这仍然是Angular 2的情况,还是内置/有更简单的方法吗?我已经看过一些以前的SO问题,但它们与Angular2无关.
如何完成捕获右键单击并阻止浏览器上下文菜单出现在Angular2中?
我可以为树创建上下文菜单并附加到'contextmenu'事件.码:
contextMenu = new Ext.menu.Menu({
items: [{
text: 'Edit',
iconCls: 'edit',
handler: edit
},...]
})
Ext.getCmp('tree-panel').on('contextmenu', function(node) {
contextMenu.show(node.ui.getAnchor());
})
Run Code Online (Sandbox Code Playgroud)
但是我如何为网格元素创建上下文菜单?
我的问题可以分为三个:
是否可以通过以下方式隐藏/删除Eclipse(3.6)中的任意上下文菜单项...
我没有找到通过方法1和方法2来实现这一目标的方法.如果唯一的选择是创建自定义插件,那么是否有人可以将我推向正确的方向从哪里开始(我有一些Java经验,但不是在Eclipse插件中插件).
我试图在片段内创建一个上下文菜单项.但是我遇到了getMenuInflater()方法的问题.这是未定义的.我已经导入了所有必要的包.谁能指出我在这里做错了什么?
这是我的代码:
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.view.MenuItem;
public class FeaturedFragment extends Fragment {
public FeaturedFragment() {
}
public static final String ARG_SECTION_NUMBER = "section_number";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.featured_fragment,container,false);
registerForContextMenu(view);
return view;
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater(); …Run Code Online (Sandbox Code Playgroud) 我有以下内容GridView:
<ListView Name="TrackListView" ItemContainerStyle="{StaticResource itemstyle}">
<ListView.View>
<GridView>
<GridViewColumn Header="Title" Width="100" HeaderTemplate="{StaticResource BlueHeader}" DisplayMemberBinding="{Binding Name}"/>
<GridViewColumn Header="Artist" Width="100" HeaderTemplate="{StaticResource BlueHeader}" DisplayMemberBinding="{Binding Album.Artist.Name}" />
<GridViewColumn Header="Album" Width="100" HeaderTemplate="{StaticResource BlueHeader}" DisplayMemberBinding="{Binding Album.Name}"/>
<GridViewColumn Header="Length" Width="100" HeaderTemplate="{StaticResource BlueHeader}"/>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
现在,我想在右边的有界项目上显示一个上下文菜单,这将允许我在后面的代码中处理事件时检索所选项目.
我可以通过哪种方式实现这一目标?
[更新]
按照Dennis Roche的代码,我现在有了这个:
<ListView Name="TrackListView" ItemContainerStyle="{StaticResource itemstyle}">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="OnListViewItem_PreviewMouseLeftButtonDown" />
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="Add to Playlist"></MenuItem>
</ContextMenu>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn Header="Title" Width="100" HeaderTemplate="{StaticResource BlueHeader}" DisplayMemberBinding="{Binding Name}"/> …Run Code Online (Sandbox Code Playgroud) 如何为Java应用程序添加子菜单项到Windows资源管理器上下文菜单(例如7-Zip)?
我的目标是拥有一个EditText没有花哨功能,只有文本选择处理程序更容易移动光标 - 所以没有上下文菜单或弹出窗口.
根据此解决方案,我已通过使用ActionMode Callback事件禁用了文本编辑功能操作栏(复制/粘贴等)的外观.
当文本存在于字段中并且文本中出现单击时,仍然会出现中间中间文本选择句柄(请参见下图).大!我想保持这种行为.我不想要的是单击文本选择句柄本身时出现的"粘贴"菜单.

我还通过设置android:longClickable="false"样式XML 禁用了EditText的长按输入.禁用长按可防止单击鼠标(即长按)时出现"粘贴/替换"菜单,但是当在文本中单击鼠标(单触)时,会出现文本选择手柄,并且单击文本选择手柄本身,然后出现"粘贴"菜单选项(当剪贴板中有文本时).这就是我想要阻止的.
从我从源头看到的内容,ActionPopupWindow就是PASTE/REPLACE选项弹出的内容.ActionPopupWindow是公共类android.widget.Editor中私有抽象类HandleView中的受保护变量(mActionPopupWindow)...
如果没有禁用剪贴板服务或编辑Android源代码,有没有办法阻止它显示?我试图定义一个新的样式android:textSelectHandleWindowStyle,并设置android:visibility为gone,但它不起作用(应用程序冻结了一段时间,否则它会显示).
contextmenu ×10
android ×2
c# ×2
wpf ×2
android-menu ×1
angular ×1
binding ×1
command ×1
eclipse ×1
eclipse-3.6 ×1
extjs ×1
grid ×1
java ×1
javascript ×1
jquery ×1
jstree ×1
windows ×1
winforms ×1
xaml ×1