标签: contextmenu

带有ItemsSource的WPF ContextMenu - 如何在每个项目中绑定到Command?

可能重复:
在DataTemplate中为MenuItem指定命令

我有一组表示菜单项的对象(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!

请问有什么建议吗?感谢你们!

wpf binding command contextmenu

21
推荐指数
1
解决办法
3万
查看次数

如何在ContextMenuStrip中设置默认菜单项?

在我的应用程序中,我在右键单击对象时使用弹出菜单项.我使用以下代码动态构建此菜单:

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用户体验指南推荐),以指示双击对象时哪个操作对应.

我该怎么做呢?

c# contextmenu winforms

21
推荐指数
1
解决办法
8769
查看次数

jsTree和上下文菜单:修改项目

我正在使用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)

javascript jquery contextmenu jstree

21
推荐指数
3
解决办法
4万
查看次数

Angular 2右键单击事件?

我正在使用Angular2构建一个交互式Web应用程序,我正在寻找一种方法来捕获角度组件的右键单击.我还需要阻止右键单击显示浏览器上下文菜单,以便显示我自己的自定义上下文菜单.

我知道在角度1中,您必须创建一个自定义指令来捕获右键单击事件.这仍然是Angular 2的情况,还是内置/有更简单的方法吗?我已经看过一些以前的SO问题,但它们与Angular2无关.

如何完成捕获右键单击并阻止浏览器上下文菜单出现在Angular2中?

contextmenu angular

21
推荐指数
1
解决办法
3万
查看次数

我如何为extjs网格创建上下文菜单

我可以为树创建上下文菜单并附加到'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)

但是我如何为网格元素创建上下文菜单?

grid extjs contextmenu

20
推荐指数
2
解决办法
4万
查看次数

是否可以隐藏/删除Eclipse中的任意上下文菜单项(3.6)

我的问题可以分为三个:

是否可以通过以下方式隐藏/删除Eclipse(3.6)中的任意上下文菜单项...

  1. 标准UI?
  2. 一些现有的插件?
  3. 自定义插件?

我没有找到通过方法1和方法2来实现这一目标的方法.如果唯一的选择是创建自定义插件,那么是否有人可以将我推向正确的方向从哪里开始(我有一些Java经验,但不是在Eclipse插件中插件).

eclipse eclipse-plugin contextmenu eclipse-3.6

20
推荐指数
1
解决办法
1万
查看次数

getMenuInflater()方法Android上下文菜单创建中的未定义问题

我试图在片段内创建一个上下文菜单项.但是我遇到了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)

android contextmenu android-menu android-contextmenu

20
推荐指数
1
解决办法
2万
查看次数

WPF:显示GridView项目的上下文菜单

我有以下内容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)

c# wpf xaml contextmenu

19
推荐指数
2
解决办法
3万
查看次数

如何为Java应用程序的Windows资源管理器添加上下文菜单?

如何为Java应用程序添加子菜单项到Windows资源管理器上下文菜单(例如7-Zip)?

java windows contextmenu windows-explorer

18
推荐指数
1
解决办法
9030
查看次数

EditText:在文本选择处理程序单击事件上禁用粘贴/替换菜单弹出窗口

我的目标是拥有一个EditText没有花哨功能,只有文本选择处理程序更容易移动光标 - 所以没有上下文菜单或弹出窗口.

根据此解决方案,我已通过使用ActionMode Callback事件禁用了文本编辑功能操作栏(复制/粘贴等)的外观.

当文本存在于字段中并且文本中出现单击时,仍然会出现中间中间文本选择句柄(请参见下图).大!我想保持这种行为.我不想要的是单击文本选择句柄本身时出现的"粘贴"菜单.

带粘贴菜单的文本选择手柄

我还通过设置android:longClickable="false"样式XML 禁用了EditText的长按输入.禁用长按可防止单击鼠标(即长按)时出现"粘贴/替换"菜单,但是当在文本中单击鼠标(单触)时,会出现文本选择手柄,并且单击文本选择手柄本身,然后出现"粘贴"菜单选项(当剪贴板中有文本时).这就是我想要阻止的.

从我从源头看到的内容,ActionPopupWindow就是PASTE/REPLACE选项弹出的内容.ActionPopupWindow是公共类android.widget.Editor中私有抽象类HandleView中的受保护变量(mActionPopupWindow)...

如果没有禁用剪贴板服务或编辑Android源代码,有没有办法阻止它显示?我试图定义一个新的样式android:textSelectHandleWindowStyle,并设置android:visibilitygone,但它不起作用(应用程序冻结了一段时间,否则它会显示).

android contextmenu android-widget android-edittext

18
推荐指数
6
解决办法
3万
查看次数