关于ContextMenu绑定问题
来源:互联网 发布:笔记本网络插口松动 编辑:程序博客网 时间:2024/05/20 05:28
<Window.ContextMenu > <ContextMenu Name="menu"> <MenuItem Header="{Binding Path=Text,ElementName=tbl}"/> </ContextMenu> </Window.ContextMenu> <TextBlock Text="右键菜单" Name="tbl" />
当使用以上代码的时候,右键窗口弹出的菜单不会显示“右键菜单”,提示“Cannot find source for binding with reference 'ElementName=tbl'”,这是由于ContextMenu不在Window的可视树中,所以找不到TextBlock。
要解决以上问题可以使用代码来进行绑定:
public MainWindow() { InitializeComponent(); this.ContextMenu = new ContextMenu(); MenuItem mi = new MenuItem(); mi.SetBinding(MenuItem.HeaderProperty, new Binding("Text") { Source = tbl }); this.ContextMenu.Items.Add(mi); }
还有一种方式是通过NameScope来解决该问题,通过实现INameScope把所有的控件名称加到同一个xaml NameScope中(Xaml中所有拥有Name或者x:Name的控件都会被添加到controls这个字典里面去),使ContextMenu能找到TextBlock来达到目的,代码如下:
public partial class MainWindow : Window,INameScope { public MainWindow() { InitializeComponent(); NameScope.SetNameScope(menu, this); } Dictionary<string, object> controls = new Dictionary<string, object>(); object INameScope.FindName(string name) { return controls[name]; } void INameScope.RegisterName(string name, object scopedElement) { controls.Add(name, scopedElement); } void INameScope.UnregisterName(string name) { controls.Remove(name); } }
- 关于ContextMenu绑定问题
- (转载)关于ContextMenu绑定问题
- WP7关于ContextMenu响应范围的问题
- 关于wpf的contextMenu的datecontext的设置问题
- DataGrid中ContextMenu的绑定
- wpf contextMenu设置问题
- 关于@Autowired自动绑定问题
- ContextMenu
- ContextMenu
- ContextMenu
- ContextMenu
- contextmenu
- ContextMenu
- ContextMenu
- ContextMenu
- Contextmenu
- ContextMenu
- ContextMenu
- 传阿里巴巴集团推迟上市至2015年底
- 如何给TTTabBar,TTTabGrid,TTTabStrip加上事件
- 用C语言将文件内容读入数组
- exp imp用法 导入导出一个表结构和数据问题
- IOS键盘的相关设置(UITextfield)
- 关于ContextMenu绑定问题
- 一个大整数相乘算法的例子
- 阿英讲频率f,角频率Ω和数字频率w的物理含义--附MATLAB仿真
- java实现webservice实例
- 对google定位功能的探讨
- 影响性能的几个方面
- sed与awk常用功能
- 向大家推荐20本最好的Linux免费书籍[英文版]
- 《COM技术内幕》读书笔记——第4章 引用计数