我有一个附加到ListView项目的弹出窗口,简化如下:
<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_Click
中获取MenuFlyout'附加'的ListView项?我尝试了一些东西,但一直没能使它工作。
如果需要,我可以发布更多代码。
答案 0 :(得分:1)
您可以通过获取DataContext来获取确切的项目。这将是您绑定的集合中的对象。
var datacontext = senderElement.DataContext;
然后您可以从该DataContext获取ListViewItem。
ListViewItem item = this.NameOfYourList.ContainerFromItem(datacontext) as ListViewItem;