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

Silverlight 在XAML中创建ContextMenu,并将其添加到代码中的项目?,silverlight,Silverlight,我正在使用Silverlight工具箱中的ContextMenu控件,我想在xaml中定义ContextMenu,并将其“添加”到我在代码中创建的控件中 我使用的是Telerik Outlook Radbar,其中包含Telerik RadTreeView。我目前正在通过一个转换器类在代码中创建RadTreeView,但我希望每个TreeView项目都有一个右键单击菜单 有没有办法将ContextMenu定义为DataTemplate,并将RadTreeView设置为使用该模板 这就是我所拥有的

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

我使用的是Telerik Outlook Radbar,其中包含Telerik RadTreeView。我目前正在通过一个转换器类在代码中创建RadTreeView,但我希望每个TreeView项目都有一个右键单击菜单

有没有办法将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>

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

谢谢您的回答。如何将XAML中的ContextMenu附加到C#中生成的一组项?我必须在代码中这样做吗?您需要为一个项目定义一个模板(您可以只添加对已有的DataTemplate可见的内容),然后将ContextMenuService.ContextMenu属性附加到模板的根元素。此外,为了使TreeView看起来像一棵树,您应该使用HierarchycalDataTemplate而不是DataTemplate。
var t = new RadTreeView();

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