Caliburn Micro:在Windows Phone模板中找不到方法的目标

时间:2014-03-25 12:41:03

标签: c# xaml windows-phone-8 caliburn.micro

我有一个带有RadDataBoundListBox的Windows Phone 8应用程序和一个包含上下文菜单的项目模板

<DataTemplate x:Key="ListboxItem">
    <Grid>
         <telerikPrimitives:RadContextMenu.ContextMenu>
                <telerikPrimitives:RadContextMenu IsFadeEnabled="False" x:Name="Menu"
                                      IsZoomEnabled="False">
                    <telerikPrimitives:RadContextMenuItem Content="{Binding LocalizedResources.Delete, Source={StaticResource LocalizedStrings}}">
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="Tap">
                                <micro:ActionMessage MethodName="Delete">
                                    <micro:Parameter Value="{Binding Id}" />
                                </micro:ActionMessage>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                    </telerikPrimitives:RadContextMenuItem>
                </telerikPrimitives:RadContextMenu>
            </telerikPrimitives:RadContextMenu.ContextMenu>
...
</DataTemplate>

和我的ViewModel中的公共Delete(int)方法。当我单击上下文菜单中的“删除”按钮时,我得到no target found for method

我猜问题是上下文菜单(可视化树),需要更多Caliburn“魔法”才能使其正常工作。

1 个答案:

答案 0 :(得分:0)

此问题的解决方案是为视图的根元素添加名称(例如:x:Name="Page")并将其添加到RadContextMenu

<telerikPrimitives:RadContextMenu micro:Action.TargetWithoutContext="{Binding ElementName=Page, Path=DataContext}" ...