我使用 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 集合。
提前致谢