在XAML中创建ContextMenu,并将其添加到代码中的项目?

时间:2011-04-16 19:13:06

标签: silverlight

我正在使用Silverlight Toolkit中的ContextMenu控件,我想在xaml中定义contextmenu,并将其“添加”到我在代码中创建的控件。

我正在使用包含Telerik RadTreeView的Telerik Outlook Radbar。我目前正在通过Converter类在代码中创建RadTreeView,但我希望每个treeviewitem都有一个右键菜单。

有没有办法将ContextMenu定义为DataTemplate,并设置RadTreeView使用它?

这就是我所拥有的,但它没有按照我的预期工作(我得到默认的silverlight右键菜单)

XAML

<DataTemplate x:Key="TreeViewItemTemplate">
    <controlsToolkit:ContextMenuService.ContextMenu>
       <controlsToolkit:ContextMenu>
          <controlsToolkit:MenuItem Header="New Folder" 
                                    Click="NewFolderMenu_Click"/>
       </controlsToolkit:ContextMenu>
    </controlsToolkit:ContextMenuService.ContextMenu>
</DataTemplate>

CS

var t = new RadTreeView();

t.IsLineEnabled = true;
t.IsDragDropEnabled = true;
t.ItemTemplate = (DataTemplate) MailboxView.MailboxResources["TreeViewItemTemplate"];

1 个答案:

答案 0 :(得分:2)

ContextMenu是ContextMenuService类的附加属性,该菜单将应用于此属性所附加到的元素。在您的示例中,它附加到空数据模板,该模板未在UI中显示任何内容,因此您无需右键单击即可获取菜单。将此属性附加到可见的内容将解决问题。