C# 绑定到ResourceDictionary XAML中DataTemplate中的ContextMenuOpening
我有一个ResourceDictionary,其中包含一个C# 绑定到ResourceDictionary XAML中DataTemplate中的ContextMenuOpening,c#,wpf,xaml,C#,Wpf,Xaml,我有一个ResourceDictionary,其中包含一个,其中包含一个。问题是如何使用绑定连接文本框的上下文菜单打开事件。我已尝试通过DependencyProperty.Register创建DependencyProperty,其名称与ContextMenuOpening事件中的绑定匹配,但在运行时错误为: 无法在“TextBox”类型的“AddContextMenuOpenHandler”属性上设置“Binding”。“绑定”只能在DependencyObject的DependencyPr
,其中包含一个
。问题是如何使用绑定连接文本框
的上下文菜单打开
事件。我已尝试通过DependencyProperty.Register
创建DependencyProperty,其名称与ContextMenuOpening
事件中的绑定匹配,但在运行时错误为:
无法在“TextBox”类型的“AddContextMenuOpenHandler”属性上设置“Binding”。“绑定”只能在DependencyObject的DependencyProperty上设置。
ResourceDictionary XAML:
<DataTemplate>
<Grid>
<TextBox ContextMenuOpening="{Binding ??WHAT GOES HERE?? }" />
</Grid>
</DataTemplate>
因为XAML在ResourceDictionary中,而不是在UserControl的XAML中,所以我试图做的是可能的吗
因为XAML在ResourceDictionary中,而不是在UserControl的XAML中,所以我试图做的是可能的吗
是的,您可以将代码隐藏文件添加到ResourceDictionary,如下所述:
添加代码隐藏文件后,可以像往常一样处理事件:
<TextBox ContextMenuOpening="TextBox_ContextMenuOpening" />
你到底想干什么?您不能将事件绑定到属性…当上下文菜单打开时,您想做什么?@mm8我想添加一个处理程序来自定义菜单事件处理程序是在视图的代码隐藏中以编程方式定义的。@mm8,是的,我知道,但这在ResourceDictionary中。也许用这种方式连接处理程序是不可能的,是的。请参考我的答案。我很感激你的回答,虽然这不是我想要做的,但已经足够接近完成工作了。我现在的问题是如何返回绑定对象,但是我发现
OnScalingMenuOpening
回调中的对象有一个DataContext
引用了绑定对象。我可以动态调用该对象,因为ResourceDictionary与绑定对象位于不同的程序集中,绑定对象不知道绑定对象的类型。有点难看,但它能用!谢谢你的帮助。我将接受并投票赞成这个答案。
private void TextBox_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
//do your thing...
}