【发布时间】:2010-02-23 14:51:28
【问题描述】:
我有一个列表框及其数据模板。列表框的项目与静态源绑定。在数据模板中,我有一个按钮,并创建了它的上下文菜单和一些菜单项。
<ObjectDataProvider x:Key="GlobalUnits"/>
<DataTemplate x:Key="listboxTemplate" DataType="UnitClass">
<StackPanel Margin="3" >
<DockPanel >
<Button DockPanel.Dock="Left" Margin="5,0,10,0">
<Button.ContextMenu>
<ContextMenu x:Name="CMUnits" Opened="OnContextMenuOpened"
MenuItem.Click="OnMenuItemClick">
<MenuItem Header="Add"
x:Name="MenuItemName" />
<MenuItem Header="Delete"
x:Name="MenuItemDelete" />
</ContextMenu>
</Button.ContextMenu>
</Button>
</DockPanel>
</StackPanel>
</DataTemplate>
<ListBox x:Name="TUListBox"
local:DragDropManager.DragSourceAdvisor="{StaticResource sourceAdvisor}"
ItemTemplate="{DynamicResource listboxTemplate}"
ItemsSource="{Binding Source={StaticResource GlobalUnits}}"/>
In Code behind:
void OnMenuItemClick(object sender, RoutedEventArgs e)
{
if (e.Source == this.MenuItemDelete) <//error here MenuItemDelete is not available
{
}
}
我在 datatemplate 中为一个按钮定义了 MenuItemDelete 作为菜单项。任何建议,如果我将上下文菜单放在普通 xaml 代码中的数据模板之外,它就可以工作。
当我在运行时单击菜单项时,我的程序调试光标甚至没有到达 OnMenuItemClick 事件
谢谢。
【问题讨论】: