我试图在WebBrowser中创建一个带有ContextMenu的ListView,然后使用ICommand进行绑定。但是,下面列出的示例在运行时,我会得到以下错误:System.Windows.Data错误:4:无法找到引用'RelativeSource FindAncestor,祖先Type='System.Windows.Controls.ListView',祖先Level='1''的绑定源。BindingExpression:path=datacontext.mycode;DataItem=null;目标元素是'menuitem'(name='');目标属性为“Command”(类型为“Icommand”)
<!--WebBrowser to Display Messages-->
<WebBrowser Name="webBrowser"
Source="http://www.whatever.com"
<!--OnContextMenuOpening event in LoadCompleted-->
LoadCompleted="webBrowser_LoadCompleted">
<WebBrowser.Resources>
<!--Show items on webBrowser on mouserightclick-->
<ListView x:Key="wbListView">
<ListView.Resources>
<ContextMenu x:Key="wbContextMenu" >
<MenuItem Header="Test" CommandParameter="{Binding}" Command="{Binding Path=DataContext.myCode, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListView}}"/>
</ContextMenu>
</ListView.Resources>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="ContextMenu" Value="{StaticResource wbContextMenu}"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
</WebBrowser.Resources>
</WebBrowser>
下面是我的代码:C#
public myCodeCommand myCode
{
get { return new myCodeCommand(this); }
}
public class myCodeCommand : ICommand
{
public bool CanExecute(object parameter)
{
Console.WriteLine("WEBBROWSER SEND MESSAGE CAN EXECUTE?");
return true;
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public void Execute(object parameter)
{
Console.WriteLine("WEBBROWSER SEND MESSAGE EXECUTE SOMETHING");
}
}
我能够在Xaml中创建ContextMenu,如下所示:
<WebBrowser.ContextMenu>
<ContextMenu x:Name="wbContextMenu" >
<MenuItem x:Name="menuItemOne" Header="Item 1" Click="menuItemOne_Click" />
<MenuItem x:Name="menuItemTwo" Header="Item 2" Click="menuItemTwo_Click" />
</ContextMenu>
</WebBrowser.ContextMenu>
在wbContextMenu事件处理程序上,如下所示:仅供参考,每个菜单项都有自己的ClickEvent。
DocumentEvents.oncontextmenu += webBrowserChat_ContextMenuOpening;
private bool webBrowserChat_ContextMenuOpening(IHTMLEventObj pEvtObj)
{
wbContextMenu.PlacementTarget = pEvtObj as ContextMenu;
wbContextMenu.IsOpen = true;
}
private void menuItemOne_Click(object sender, RoutedEventArgs e)
{
//Put whatever you want handled here for menuitem
}
private void menuItemTwo_Click(object sender, RoutedEventArgs e)
{
//Put whatever you want handled here for menuitem
}
我在这里遇到了TreeView绑定和ContextMenu的问题:Selected TreeView项为空 现在我有这个问题:我有ContextMenu (图片显示了我的ContextMenu的样子,不要介意tabItem...)。 正如你所看到的,它只是ContetMenu,没有MenuItem!如果用户单击“关闭”,我想在ViewModel中执行一些操作(发出命令?)。我还想知道他点了哪个按钮
使用带有restful Webservices的open cmis在Alfresco中创建文件夹 我如何使用Open Cmis和RESTFul Webservices在Alfresco中创建文件夹?我尝试了,但它显示以下错误: 请提前帮我解决这个错误。。 web.xml网站
桑谢·萨赫德娃
为2020年更新,我链接了我的文章,在文章中我比较了在基本Windows桌面应用程序中托管HTML WebView的不同方法的内存占用: MSedge WebView2 WPF Chromely/CEFSharp 电子V10 旧版IE11 WebBrowser WPF。 基于Internet Explorer的WPF WebBrowser控件存在一些键盘和焦点问题以及内存泄漏问题。作为这些问题的替
问题内容: 两者之间到底有什么区别 和 第一个只是加快字段初始化速度的捷径吗?有性能方面的考虑吗? 问题答案: 第二种形式总是创建一个空的地图。 第一种形式是地图文字的特殊情况。地图文字允许创建 非空 地图: 现在,您的(通用)示例: 是没有初始值(键/值对)的地图文字。它完全等同于: 此外,这是为地图指定初始容量(大于初始分配的元素数量)的唯一方法。例: 将创建一个地图,该地图具有足够的空间来容
要为数据库创建授权,我使用以下salt模块 但它创造了我这个 即它为我创建了这个赠款 将keystone.*上的所有特权授予keystone@localhost 但我需要创建这个赠款 将keystone.*上的所有特权授予由“password”标识的“keystone”@“localhost”; 有人能建议我如何使用SaltStack添加带有密码的授权吗