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



我有以下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。

我该怎么修?

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

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

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

最新更新