如何使用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);
}
对不起,我可怜的英语。谢谢你的帮助。
答
使用下面的代码
caliburn:Action.TargetWithoutContext="{Binding Path=DataContext,ElementName=stackpanelName}"
$ EventArgs的不会是一个更好的解决办法?你能够调试DelEle()方法来查看它是否在此之前崩溃?或在那个方法?您有可能遇到Visual Tree问题。 试试这个以及 –
mvermef
2014-11-22 00:32:35
我试过“”但没有任何改变。不,我不能调试DelEle bacause第一次崩溃。 我认为是一个XAML问题,如果我用另一种方法绑定元素,它会崩溃。 –
Emanuele
2014-11-22 08:49:03
大家好。我解决我的问题按照这个教程: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