【问题标题】:How to bind method in MenuFlyout with Caliburn Micro?如何将 MenuFlyout 中的方法与 Caliburn Micro 绑定?
【发布时间】:2015-01-20 04:13:37
【问题描述】:

我想学习 Caliburn Micro,以便在我的 Windows Phone 应用程序中使用它。 我不知道如何在我的 MenuFlyoutItem 中使用 Caliburn Micro。 我试过这样:

<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);
}

对不起,我的英语很差。感谢您的帮助。

【问题讨论】:

  • $eventArgs 不是更好的解决方案吗?您是否能够调试 DelEle() 方法以查看它是否在此之前崩溃?还是用那种方法?您可能遇到了 Visual Tree 问题。 也试试这个
  • 我尝试了“”,但没有任何改变。不,我无法调试 DelEle,因为首先应用程序崩溃。我认为是 XAML 问题,如果我将元素与另一种方法绑定,它会崩溃。
  • 大家好。我按照本教程解决了我的问题:wp.qmatteoq.com/… 感谢所有人。首先:我为我的页面设置了一个名称(x:Name="MainP")。之后,我以这种方式更改了我的 XAML。 ''
  • 是的,接下来的故障排除方向是使用 TargetWithoutContext。

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


【解决方案1】:

使用下面的代码

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 2016-06-27
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多