如何使用Caliburn Micro在MenuFlyout中绑定方法?

如何使用Caliburn Micro在MenuFlyout中绑定方法?

问题描述:

我想学习Caliburn Micro在我的Windows Phone应用程序中使用它。 我不知道如何在我的MenuFlyoutItem中使用Caliburn Micro。 我已经试过这样:如何使用Caliburn Micro在MenuFlyout中绑定方法?

<StackPanel micro:Message.Attach="[Event Holding] = [Action OpenFlyout($source)]"> 
    <FlyoutBase.AttachedFlyout> 
     <MenuFlyout> 
      <MenuFlyoutItem Text="Edit" micro:Message.Attach="[Event Click] = [Action EditEle($source)]"/> 
      <MenuFlyoutItem Text="Remove" micro:Message.Attach="[Event Click] = [Action DelEle($source)]" /> 
     </MenuFlyout> 
    </FlyoutBase.AttachedFlyout> 
    ... 
</StackPanel> 

“OpenFlyout” 的作品。所以当我点击并按住一个元素时,我可以查看MenuFlyout。 但是,如果我点击“编辑”,应用程序崩溃。

我试图在函数中插入一个断点,但应用程序没有停止。 所以,我认为这是一个有约束力的问题。

方法DelEle和EditEle非常相似(除了他们的任务)。 在这里你可以找到方法:DelEle。

public void DelEle(FrameworkElement senderElement) 
{ 
    CreditCard obj = senderElement.DataContext as CreditCard; 
    DeleteFromCardKeyList(obj.NameID.ToUpper()); 
    DeleteTxtCardFile(obj.NameID.ToUpper()); 
    CreditCards.Remove(obj); 
} 

对不起,我可怜的英语。谢谢你的帮助。

+0

$ EventArgs的不会是一个更好的解决办法?你能够调试DelEle()方法来查看它是否在此之前崩溃?或在那个方法?您有可能遇到Visual Tree问题。 试试这个以及 – mvermef 2014-11-22 00:32:35

+0

我试过“”但没有任何改变。不,我不能调试DelEle bacause第一次崩溃。 我认为是一个XAML问题,如果我用另一种方法绑定元素,它会崩溃。 – Emanuele 2014-11-22 08:49:03

+2

大家好。我解决我的问题按照这个教程:http://wp.qmatteoq.com/first-steps-in-caliburn-micro-with-windows-phone-8-how-to-manage-different-datacontext/ 感谢所有。首先:我为我的页面设置一个名称(x:Name =“MainP”)。 之后,我改变了我的XAML这种方式。微软:Message.Attach =“[事件点击] = [动作EditEle($ dataContext)]”//>' – Emanuele 2014-11-22 11:05:37

使用下面的代码

caliburn:Action.TargetWithoutContext="{Binding Path=DataContext,ElementName=stackpanelName}"