Silverlight控件的名称在代码隐藏中不可用

时间:2012-09-05 07:41:58

标签: silverlight-4.0 contextmenu code-behind

我有以下XAML:

<controls:ContextMenuService.ContextMenu>
         <controls:ContextMenu Height="Auto" x:Name="contextMenu">
                   <controls:MenuItem x:Name="AddMenuItem" Header="Add document" 
                                      IsEnabled="True" Click="AddMenuItem_Click">
                   </controls:MenuItem>
            ...

我无法在代码隐藏中看到contextMenu(编译错误“名称”contextMenu“在当前上下文中不存在”)。 我试图找到它:

ContextMenu menu = FindName("contextMenu") as ContextMenu;

但它总是返回null。

我已经检查了构建操作 - 它被设置为Page。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

我认为您必须使用ContextMenuService来获取对象的ContextMenu。 ContextMenuService提供了返回指定对象的ContextMenu的方法GetContextMenu(DependencyObject)

所以在你的情况下你需要写:

DependencyObject objectWithContextMenu = // Control that has a ContextMenu
ContextMenu menu = ContextMenuService.GetContextMenu(objectWithContextMenu);