我有一个用XAML代码编写的WPF ListView
控件ContextMenu
.随着对每一个右键单击ListView
的ContextMenu
显示,即使有在没有任何项目ListView
.
这是我不想要的行为.在ContextMenu
如果在该项目应只开放ListView
.我没有问题计算项目,但我找不到正确的事件来抑制ContextMenu
.
我怎样才能做到这一点?
我想获取列表视图项的文本.而我正在制作上下文菜单的标题是项目的单击文本.
这是我的观点
<LinearLayout
android:id="@+id/innerlayout"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:clickable="true"
android:layout_weight="0.85"
android:orientation="vertical" >
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
在oncreate中我设置了简单的游标适配器
SimpleCursorAdapter mysqliteadapter=new SimpleCursorAdapter(this,R.layout.thepatientrow,cursor,from,to);
setListAdapter(mysqliteadapter);
Run Code Online (Sandbox Code Playgroud)
在OnCreateContextMenu中,我想通过选择项文本设置Heder标题
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("");
menu.add(Menu.NONE,CONTEXT_MENU_DELETE_ITEM,Menu.NONE,"Delete");
menu.add(Menu.NONE,CONTEXT_MENU_UPDATE,Menu.NONE,"Update");
}
Run Code Online (Sandbox Code Playgroud)
请告诉您宝贵的建议.
我添加了一些图片以便于您理解
我想显示上下文菜单标题,如下所示
以下类派生自System.Windows.Controls.UserControl
.在所述类中,我调用OpenFileDialog
打开XAML文件(工作流文件).接下来,我在右键单击鼠标时实现动态菜单.菜单没有显示.这是线程问题还是UI问题?在我的研究中,我一直无法找到解决方案.
提前致谢.
private void File_Open_Click(object sender, RoutedEventArgs e)
{
var fileDialog = new OpenFileDialog();
fileDialog.Title = "Open Workflow";
fileDialog.Filter = "Workflow| *.xaml";
if (fileDialog.ShowDialog() == DialogResult.OK)
{
LoadWorkflow(fileDialog.FileName);
MouseDown += new System.Windows.Input.MouseButtonEventHandler(mouseClickedResponse);
}
}
private void mouseClickedResponse(object sender, System.Windows.Input.MouseEventArgs e)
{
if (e.RightButton == MouseButtonState.Pressed)
{
LoadMenuItems();
}
}
private void LoadMenuItems()
{
System.Windows.Controls.ContextMenu contextmenu = new System.Windows.Controls.ContextMenu();
System.Windows.Controls.MenuItem item1 = new System.Windows.Controls.MenuItem();
item1.Header = "A new Test";
contextmenu.Items.Add(item1);
this.ContextMenu = contextmenu;
this.ContextMenu.Visibility = Visibility.Visible;
}
Run Code Online (Sandbox Code Playgroud) 我有一个上下文菜单,返回单击作为变量值的菜单项,如下所示.
var m = key;
Run Code Online (Sandbox Code Playgroud)
例如,变量可以是我编程的任何东西; 编辑,剪切,粘贴或任何我想要的东西.
是否可以将此变量用作函数名称?例如:function m()其中m可以是变量的内容.
任何建议将不胜感激.
谢谢
克里斯
这是一个问题.
我在按钮单击时显示上下文菜单,菜单命令ICommand
在视图模型中绑定到.菜单显示在按钮单击和右键单击上.问题是当我单击按钮然后单击上下文菜单时菜单单击不触发,但是当我右键单击按钮然后单击菜单时,我可以确认菜单正在工作.
<Button Grid.Row="3" Width="500" Height="30" Name="cmButton" >
Button with Context Menu
<Button.ContextMenu>
<ContextMenu DataContext="{Binding Path=PlacementTarget.DataContext, RelativeSource={RelativeSource Mode=Self}}" >
<MenuItem DataContext="{Binding}" Header="New Layout Element..." Command="{Binding Path=SubmitBtn}" />
</ContextMenu>
</Button.ContextMenu>
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<EventTrigger RoutedEvent="Click">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="ContextMenu.IsOpen">
<DiscreteBooleanKeyFrame KeyTime="0:0:0" Value="True"/>
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Run Code Online (Sandbox Code Playgroud)
我可以确认我的视图模型没有任何问题,因为当我右键单击按钮然后单击上下文菜单时命令会触发.
我正在开发一个具有可编辑文本字段的Cocoa应用程序.这些文本字段需要接受值,但不需要进行拼写检查或使用默认上下文菜单中给出的任何其他选项.我已经读过删除右键单击/ opt +单击上下文菜单的最简单方法是覆盖该功能:
rightMouseDown:(NSEvent *)
Run Code Online (Sandbox Code Playgroud)
我在自定义的NSTextfield类中完成了这个.启用和取消选中文本框时,此修复程序会阻止用户右键单击,但只要用户双击/输入文本字段进行编辑,就会返回默认的右键单击功能.
这是因为firstResponder在尝试编辑字段时切换到继承链中的类吗?这种方法是禁用此NSTextField的所有上下文菜单功能的正确方法吗?
谢谢!
我想在recyclerview的cardview项目上有一个上下文菜单.
如何为RecyclerView创建上下文菜单并没有真正提供解决方案.
我可以在ViewHolder上创建一个OnClickListener和一个OnLongClickListener.我也可以放入一个OnCreateContextMenu,但是从不调用onCreateContextMenu.
任何人都可以提供一个例子吗?
我正在尝试向Atom编辑器添加上下文菜单命令,以便我可以轻松切换书签.我在config.cson
文件中添加了以下内容:
"context-menu":
"atom-text-editor":
Bookmark: "bookmarks:toggle-bookmark"
Run Code Online (Sandbox Code Playgroud)
我重新启动Atom并右键单击一行代码,但上下文菜单没有更改.我还有别的办法吗?(我在Windows 7和Ubuntu 14上尝试过Atom,但都没有更新上下文菜单.)
我试图将ContextMenu放在下面的样式中,以便它可以被所有文本框共享.
<Grid.Resources>
<Style x:Key="Cell" TargetType="TextBox">
<Setter Property="Margin" Value="0"/>
<Setter Property="BorderBrush" Value="Black"/>
<Setter Property="BorderThickness" Value="0.2"/>
<Setter Property="VerticalAlignment" Value="Stretch"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="MinHeight" Value="30"/>
<Setter Property="MinWidth" Value="70"/>
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="Level1" Click="SubLevel1_Click_1"/>
<MenuItem Header="SubLevel1"/>
</ContextMenu>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
Run Code Online (Sandbox Code Playgroud)
此代码正常工作,直到我添加Click事件.当添加click事件时,它构建但在执行时抛出异常:'set connectionId引发异常.行号'21'和行位置'34'.
我在这里做错了什么.
contextmenu ×10
wpf ×4
android ×3
c# ×2
atom-editor ×1
bookmarks ×1
button ×1
cocoa ×1
javascript ×1
listview ×1
macos ×1
nstextfield ×1
objective-c ×1
onclick ×1
popupmenu ×1
styles ×1
var ×1
variables ×1