我使用 Caliburn.Micro 以编程方式加载一个没有问题的 radMenu,Xaml 看起来像这样:
<telerik:RadMenu ItemsSource="{Binding .MenuItems}"
                 VerticalAlignment="Top"
                 cal:Action.TargetWithoutContext="{Binding RelativeSource={RelativeSource Self}}"
                 cal:Message.Attach="[Event ItemClick] = [Action MenuItemClick($this)]">
  <telerik:RadMenu.ItemContainerStyle>
    <Style TargetType="telerik:RadMenuItem">
      <Setter Property="Tag"
              Value="{Binding .Tag}" />
      <Setter Property="Header"
              Value="{Binding .Text}" />
      <Setter Property="Icon"
              Value="{Binding .Image}" />
      <Setter Property="ItemsSource"
              Value="{Binding .SubItems}" />
      <Setter Property="Command"
              Value="{Binding .SubItems}" />
    </Style>
  </telerik:RadMenu.ItemContainerStyle>
</telerik:RadMenu>
在我的 ViewModel 上,我有从数据库填充的相应 MenuItems 属性。代码如下所示:
Property MenuItems As New ObservableCollection(Of MenuItem)
Public Sub MenuItemClick(item As MenuItem)
    MessageBox.Show(item.Tag)
End Sub
问题是 ItemClick 事件的接线,我需要接收 radMenuItem 对象,我的意思是,我需要知道单击了哪个 MenuItem。
我在 Action.TargetWithoutContext 属性上尝试了各种组合,到目前为止,我只得到了 MenuItems 集合。
提前致谢