C# 列表视图中的MenuFlyout:单击了哪个元素

C# 列表视图中的MenuFlyout:单击了哪个元素,c#,xaml,winrt-xaml,windows-phone-8.1,C#,Xaml,Winrt Xaml,Windows Phone 8.1,我有一个带有评论列表的列表视图: 按住注释时显示的弹出菜单在第页中定义。参考资料: <Page.Resources> <MenuFlyout x:Name="flyout1" x:Key="FlyoutBase1"> <MenuFlyoutItem x:Name="ReportCommentFlyout" Text="{Binding User, Converter={StaticResou

我有一个带有评论列表的列表视图:

按住注释时显示的弹出菜单在第页中定义。参考资料:

<Page.Resources>
    <MenuFlyout x:Name="flyout1" x:Key="FlyoutBase1">
        <MenuFlyoutItem x:Name="ReportCommentFlyout" 
                        Text="{Binding User, Converter={StaticResource ReportOrDeleteComment}}" 
                        Click="ReportCommentFlyout_Click"/>
    </MenuFlyout>
</Page.Resources>

但是应用程序崩溃了

您的应用程序崩溃是因为您将e.OriginalSource强制转换为注释,而它不工作是因为它不是那种类型。通常,使用“as”这样做通常更安全

关于你的问题,你试过了吗

var menuFlyoutItem = sender as MenuFlyoutItem;
if (menuFlyoutItem != null)
{
    var comment = menuFlyoutItem.DataContext as Comment;
    if (comment != null)
    {
        string CommentId = comment.Id;
    }
}

您的应用程序崩溃是因为您将e.OriginalSource强制转换为注释,而它不工作是因为它不是那种类型。通常,使用“as”这样做通常更安全

关于你的问题,你试过了吗

var menuFlyoutItem = sender as MenuFlyoutItem;
if (menuFlyoutItem != null)
{
    var comment = menuFlyoutItem.DataContext as Comment;
    if (comment != null)
    {
        string CommentId = comment.Id;
    }
}
string CommentId = ((Comment)e.OriginalSource).Id;
var comment = someObject as Comment;
if (comment != null)
{

....

}
var menuFlyoutItem = sender as MenuFlyoutItem;
if (menuFlyoutItem != null)
{
    var comment = menuFlyoutItem.DataContext as Comment;
    if (comment != null)
    {
        string CommentId = comment.Id;
    }
}