4

我有一个附加到 ListView 项的 Flyout,简化如下:

<ListView.ItemTemplate>
    <DataTemplate>
        <StackPanel IsHoldingEnabled="True" Holding="ListView_Holding" >
            <FlyoutBase.AttachedFlyout>
                <MenuFlyout>
                    <MenuFlyoutItem Text="remove" Click="MenuFlyoutItem_Click"  />
                </MenuFlyout>
            </FlyoutBase.AttachedFlyout>
        </StackPanel>
    </DataTemplate>
</ListView.ItemTemplate>

private void ListView_Holding(object sender, HoldingRoutedEventArgs e)
{
    FrameworkElement senderElement = sender as FrameworkElement;
    FlyoutBase flyoutBase = FlyoutBase.GetAttachedFlyout(senderElement);

    flyoutBase.ShowAt(senderElement);
}

private void MenuFlyoutItem_Click(object sender, RoutedEventArgs e)
{

}

如何从MenuFlyoutItem_ClickMenuFlyout “附加”到的 ListView 项目中获取?我已经尝试了一些东西,但无法使其工作。

如果需要,我可以发布更多代码。

4

1 回答 1

2

您可以通过获取 DataContext 来获取确切的项目。这将是您绑定到的集合中的对象。

var datacontext = senderElement.DataContext;

然后您可以从该 DataContext 中获取 ListViewItem。

ListViewItem item = this.NameOfYourList.ContainerFromItem(datacontext) as ListViewItem;
于 2015-03-08T14:40:36.480 回答