【问题标题】:MenuFlyoutItem Get ParentMenuFlyoutItem 获取父级
【发布时间】:2015-05-09 17:30:59
【问题描述】:

我有一个附加到 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_Click 中获取 MenuFlyout 已“附加”到的 ListView 项目?我已经尝试了一些东西,但无法使其工作。

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

【问题讨论】:

    标签: c# windows-phone-8.1 flyout


    【解决方案1】:

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

    var datacontext = senderElement.DataContext;
    

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

    ListViewItem item = this.NameOfYourList.ContainerFromItem(datacontext) as ListViewItem;
    

    【讨论】:

    • 感谢您的回复,那里有一些我不知道的有用的东西。当用户单击弹出按钮上的“删除”而不是长按项目本身时,我想执行代码以从 ListView 中删除项目,我该如何从 MenuFlyoutItem_Click 中进行此操作?
    • @blawford datacontext 是项目本身(不是 ListViewItem 而是确切的上下文项目)。如果您将 ListView.ItemsSource 绑定到 ObservableCollection,只需从 ListView 中删除此数据上下文即可立即反映在 ListView 中!
    猜你喜欢
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多