如何在Windows Phone 8.1中正确设置ListView的“ContextMenu”?

7
我有一个与MenuFlyout相关的问题。我正在尝试获取上下文菜单,其中包括“删除”和“编辑”选项,但是如果用户单击其中一个选项,则似乎没有解决方案可以获取listview或所选项目。也许我只是对某些事情感到困惑,但我整天搜索了一整天,即使人们遇到了类似的问题,也没有一个解决方案适用于我。
XAML:
    <Pivot x:Name="MyPivot" Title="MyTitle" ItemsSource="{Binding}">
        <Pivot.HeaderTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Title}"/>
            </DataTemplate>
        </Pivot.HeaderTemplate>

        <Pivot.ItemTemplate>
            <DataTemplate>
                <ScrollViewer>
                    <ListView x:Name="MyListView" ItemsSource="{Binding Items}">
                        <ListView.ItemContainerStyle>
                            <Style TargetType="ListViewItem">
                                <Setter Property="HorizontalAlignment" Value="Stretch"/>
                                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                                <Setter Property="Margin" Value="0,0,0,10"/>
                            </Style>
                        </ListView.ItemContainerStyle>

                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <Grid Holding="Grid_Holding">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto"/>
                                        <ColumnDefinition Width="*"/>
                                        <ColumnDefinition Width="Auto"/>
                                    </Grid.ColumnDefinitions>

                                    <FlyoutBase.AttachedFlyout>
                                        <MenuFlyout>
                                            <MenuFlyoutItem x:Name="EditButton"
                                                            Text="Edit"
                                                            Click="EditButton_Click"/>
                                            <MenuFlyoutItem x:Name="DeleteButton"
                                                            Text="Delete"
                                                            Click="DeleteButton_Click"/>
                                        </MenuFlyout>
                                    </FlyoutBase.AttachedFlyout>

                                    // Content (TextBlocks...) 

                                </Grid>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>
                </ScrollViewer>
            </DataTemplate>
        </Pivot.ItemTemplate>
    </Pivot>

C#

    private void Grid_Holding(object sender, HoldingRoutedEventArgs e)
    {
        FrameworkElement senderElement = sender as FrameworkElement;
        FlyoutBase flyoutBase = FlyoutBase.GetAttachedFlyout(senderElement);
        flyoutBase.ShowAt(senderElement);
    }
1个回答

8
一旦您的点击事件被触发,您可以获取FrameworkElement的DataContext。
private void EditButton_Click(object sender, RoutedEventArgs e)
{
    var datacontext = (e.OriginalSource as FrameworkElement).DataContext;

    //this datacontext is probably some object of some type T (whatever is in your Items collections you haven't specified in your question)
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接