我正在使用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"];
答案 0 :(得分:2)
ContextMenu是ContextMenuService类的附加属性,该菜单将应用于此属性所附加到的元素。在您的示例中,它附加到空数据模板,该模板未在UI中显示任何内容,因此您无需右键单击即可获取菜单。将此属性附加到可见的内容将解决问题。