Я пытаюсь создать ListView с ContextMenu внутри WebBrowser, а затем использовать ICommand для привязки. Однако, приведенный ниже пример, когда это выполняется, я получаю следующую ошибку: Ошибка System.Windows.Data: 4: Не удается найти источник для привязки со ссылкой «RelativeSource FindAncestor, AncestorType =« System.Windows.Controls.ListView », AncestorLevel = '1'». BindingExpression: Path = DataContext.MyCode; DataItem = NULL; целевым элементом является «MenuItem» (Name = ''); предназначаться свойство является 'Command' (тип 'ICommand')WPF создать ListView с ContextMenu внутри WebBrowser с помощью ICommand
Вот мой код: XAML
<!--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");
}
}