你好同伴stackoverflowers,
我写了一段代码.我有一个viewstack巫婆加载5个模块的应用程序.每个模块都通过moduleLoader标签加载,它们都有一个id.
每个加载的模块都有一个上下文菜单 上下文菜单有5个menuItems.一个menuItem用于视图堆栈的每个视图.
上下文菜单通过xml加载.
这是我的申请文件.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
backgroundColor="#b1b1b1"
backgroundGradientColors="[#b1b1b1,#252525]">
<mx:Script>
<![CDATA[
import mx.core.Container;
//change viewstack views via modules context menu
public function switchView(viewId:String):void
{
var container:Container = Container(tops.getChildByName(viewId));
if (container != null)
{
tops.selectedChild = container;
}
}
]]>
</mx:Script>
<mx:ViewStack id="tops" width="100%" height="100%">
<mx:ModuleLoader id="admin" url="view/admin.swf" width="100%" height="100%"/>
<mx:ModuleLoader id="tv" url="view/tv.swf" width="100%" height="100%"/>
<mx:ModuleLoader id="community" url="view/community.swf" width="100%" height="100%"/>
<mx:ModuleLoader id="shop" url="view/shop.swf" width="100%" height="100%"/>
<mx:ModuleLoader id="communicator" url="view/communicator.swf" width="100%" height="100%"/>
</mx:ViewStack>
</mx:Application>
Run Code Online (Sandbox Code Playgroud)
这是我的模块中的switch语句
public function changeView():void{ …Run Code Online (Sandbox Code Playgroud) @Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Selection Options");
menu.add(0, v.getId(), 0, "Remove");
}
Run Code Online (Sandbox Code Playgroud)
我希望我的菜单说"删除AAPL"
我会从我的数组适配器获取字符串AAPL,但我不知道如何从此方法访问我的数组适配器索引.
我有:
<ListBox>
<ListBox.Resources>
<DataTemplate DataType="{x:Type ViewModels:StyleViewModel}">
<DockPanel>
<Button Content="{Binding Name}" Tag="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}">
<Button.ContextMenu>
<ContextMenu>
<MenuItem Header="Delete" Command="{Binding PlacementTarget.Tag.DataContext.RemoveMember1FavoriteStyleCommand}" CommandParameter="{Binding}" />
</ContextMenu>
</Button.ContextMenu>
</Button>
</DockPanel>
</DataTemplate>
</ListBox.Resources>
</ListBox>
Run Code Online (Sandbox Code Playgroud)
我想要实现的是将上下文菜单的menuitem中的命令绑定到在视图模型中定义的ICommand,该视图模型是列表框的datacontext,而命令参数应该是StyleViewModel,但是我尝试的不是'工作.谁能指出我正确的方向?
我有一个C#应用程序,我动态填充,然后启动一个名为cmTestplan的上下文菜单.
private void cmTestplan_Opening(object sender, CancelEventArgs e)
{
if ((cmTestplan.SourceControl is TextBox) &&
(cmTestplan.SourceControl.Enabled == true) &&
(cmTestplan.SourceControl.Text != ""))
{
RightClickSetup(cmTestplan.SourceControl.Text);
cmTestplan.Show();
}
}
private void RightClickSetup(string Path)
{
this.UseWaitCursor = true;
cmTestplan.Items.Clear();
//Test for file or folder
if (Directory.Exists(Path) == true)
{
cmTestplan.Items.Add("Open folder");
this.UseWaitCursor = false;
}
else if (File.Exists(Path) == true)
{
cmTestplan.Items.Add("Open folder");
cmTestplan.Items.Add("Open file");
this.UseWaitCursor = false;
}
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因(我希望你们其中一位女士或先生们能够提供),我第一次右键单击与此cmTestplan关联的文本框时,菜单不会显示.此后,只需单击一下,它就会一致显示.
我已经尝试评论所有文件/文件夹检查仍然得到问题.
我正在尝试禁用并启用菜单选项,但它显示错误:Nullpointer异常.
这是我的代码:
mnu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/Add" android:title="Add" android:icon="@drawable/add"/>
<item android:id="@+id/bill_menu" android:title="Bill" android:enabled="false" />
</menu>
Run Code Online (Sandbox Code Playgroud)
我在我的java类中使用过
//creating menu
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mnu, menu);
MenuItem mi=((MenuItem) this.findViewById(R.id.bill_menu));
mi.setEnabled(true);
}
return true;
}
Run Code Online (Sandbox Code Playgroud) 我可以为folders right click menuusing注册表添加一个新项:
HKEY_CLASSES_ROOT\folder\shell \您的项目名称
但我不知道如何设置创建项目的图标,如下所示:

愿有人帮助我吗?
我想在listview上放置一个上下文菜单.这看起来很简单,但我得到了一些有趣的行为.列表视图有两个字段,textview和editText.长按打开EditText上的菜单,但列表视图上没有其他地方.这是代码片段.
public class ManageClass extends ListActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.manageclass);
//Tons of not relevant stuff that I would be happy to provide.
pfdata = new PortfolioData(this);
try {
Cursor cursor = getClasses();
showClasses(cursor);
} finally {
pfdata.close();
}
}
private Cursor getClasses() {
String sql = "select c._id, c.NAME as NAME , c.percentage as PERCENTAGE "
+ "from asset_classes c;";
SQLiteDatabase db = pfdata.getReadableDatabase();
Cursor cursor = db.rawQuery(sql, null);
startManagingCursor(cursor);
return cursor;
}
private void showClasses(Cursor cursor) {
adapter = new …Run Code Online (Sandbox Code Playgroud) 我在这篇着名的文章的帮助下使用HierarchicalDataTemplate创建了一个TreeView.
我的树视图中的每个节点都有不同的contextMenu.所以我为treeView创建了一个属性,它为我返回所选节点的对象.然后我使用下面的代码来显示我的ContextMenu.但contextMenu总是空的.
<view:MyTreeView ItemsSource="{Binding MyNode}"
SelectedItem="{Binding Path=SelectedItem, Mode=TwoWay}" >
<TreeView.Resources>
<ContextMenu x:Key="MyContextMenu" ItemsSource="{Binding ContextMenuItem}"/>
<DataTemplate DataType="{x:Type local:ChildViewModel}">
<StackPanel Orientation="Horizontal" ContextMenu="{StaticResource MyContextMenu}">
//...
</StackPanel>
</DataTemplate>
</TreeView.Resources>
</view:MyTreeView>
Run Code Online (Sandbox Code Playgroud)
PrincipalViewModel :(与ChildViewModel无关)
private ICommand _editMapCommand;
public ICommand EditMapCommand
{
get
{
return _editMapCommand;
}
set
{
SetProperty(ref _editMapCommand, value, () => EditMapCommand);
OnPropertyChanged("EditMapCommand");
}
}
private ICommand _removeMapCommand;
public ICommand RemoveMapCommand
{
get
{
return _removeMapCommand;
}
set
{
SetProperty(ref _removeMapCommand, value, () => RemoveMapCommand);
OnPropertyChanged("RemoveMapCommand");
}
}
private ObservableCollection<MenuItem> _contextMenuMap; …Run Code Online (Sandbox Code Playgroud) 我正在创建基于具有回调函数的javascript数组的上下文菜单,但是遇到了两个问题
当鼠标移动到没有子节点的元素时,无法隐藏子菜单(On Delete Section).
无法在适当的层次结构中显示子菜单(移动到兄弟姐妹部分后无法返回子部分的子菜单).
我的代码:
d3.contextMenu = function (menu, openCallback) {
// create the div element that will hold the context menu
d3.selectAll('.d3-context-menu').data([1])
.enter()
.append('div')
.attr('class', 'd3-context-menu');
// close menu
d3.select('body').on('click.d3-context-menu', function() {
d3.select('.d3-context-menu').style('display', 'none');
});
// this gets executed when a contextmenu event occurs
return function(data, index) {
var elm = this;
d3.selectAll('.d3-context-menu').html('');
var list = d3.selectAll('.d3-context-menu').append('ul');
list.selectAll('li').data(menu).enter()
.append('li')
.html(function(d) {
return d.title;
})
.on('click', function(d, i) {
d.onMouseClick(elm, data, index);
})
.on('mouseover',function(d,i){
d.onMouseOver(elm,data,index);
if(d.chidernItems.length>0 )
{
d3.select(this).selectAll("ul").remove(); …Run Code Online (Sandbox Code Playgroud)我目前正在创建一个codepen,您可以在打开contextmenu时更改页面上每个元素的颜色,背景颜色,文本等.
我存储了元素,我在变量中右键单击:
var x = event.clientX, y = event.clientY,
efp = document.elementFromPoint(x, y);
Run Code Online (Sandbox Code Playgroud)
当我efp在控制台中返回该变量的值时,它会返回正确的元素.
现在的问题是:
改变颜色,例如文本元素,工作正常.但是当我再次尝试这样做时,它不仅会改变元素,还会改变我之前改变过的元素.
像这样:
更改颜色p- >更改p
更改背景section- >更改section 和 p
更改颜色h1- >更改h1 和 section AND p
这是我的完整代码:
$(document).on("contextmenu", function(e){
$('.custom-menu li').show(0);
e.preventDefault();
var el = e.target.nodeName;
var x = event.clientX, y = event.clientY,
efp = document.elementFromPoint(x, y);
console.log(efp);
switch(el){
case "P":
ctxP();
break;
case "CONTENT":
ctxCon();
break;
case "HEADER":
ctxHead();
break;
case "FOOTER":
ctxFoot(); …Run Code Online (Sandbox Code Playgroud)contextmenu ×10
android ×3
css ×2
javascript ×2
.net ×1
apache-flex ×1
binding ×1
c# ×1
d3.js ×1
datatemplate ×1
html ×1
jquery ×1
listadapter ×1
listview ×1
module ×1
mvvm ×1
registry ×1
right-click ×1
show ×1
tags ×1
treeview ×1
viewstack ×1
wpf ×1
xaml ×1