【问题标题】:How to get ListViewItem using his FlyoutMenuItem?如何使用他的 FlyoutMenuItem 获取 ListViewItem?
【发布时间】:2018-01-24 08:16:52
【问题描述】:

XAML:

<Page.Resources>
    <MenuFlyout x:Key = "ElementMenuFlyout">
        <MenuFlyoutItem Text = "Edit" Icon = "Edit" Click = "Edit"/>
    </MenuFlyout>
</Page.Resources>

...
<ListView SelectionMode = "None" IsItemClickEnabled = "True" x:Name="Lessons"></ListView>

ListView.Items的初始化:

foreach (Tables.Lesson lesson in lessons)
{
    Lessons.Items.Add(new ListViewItem {Content = lesson, ContextFlyout = this.Resources["ElementMenuFlyout"] as MenuFlyout });
}

MenuFlyoutItem.Click:

private void Edit(object sender, RoutedEventArgs e)
{
    Frame.Navigate(typeof(ElementInfo), (e.OriginalSource as MenuFlyoutItem).DataContext);
}

我在 DataContext 中得到空值。如何获取调用了这个 MenuFlyout 的 ListViewItem 或这个 ListViewItem 的内容?

【问题讨论】:

    标签: listview uwp listviewitem flyout


    【解决方案1】:

    如何获取调用此 MenuFlyout 的 ListViewItem 或此 ListViewItem 的内容?

    当您尝试触发属于ListViewContextFlyoutMenuFlyout时,您可能需要在PC上右键单击ListView或在手机上长按它,两者都会触发RightTapped 先处理事件。通过RightTappedRoutedEventArgs,您可以获得当前的右击ListViewItemPresenter,然后可以获得DataContext。例如:

    XAML

    <ListView
        x:Name="Lessons"
        IsItemClickEnabled="True"
        RightTapped="Lessons_RightTapped"
        SelectionMode="None" />
    

    后面的代码

    private ListViewItemPresenter currentitem; 
    private void Edit(object sender, RoutedEventArgs e)
    {        
        if (currentitem != null)
        {  
           Frame.Navigate(typeof(ElementInfo), currentitem.DataContext);
        }  
    } 
    private void Lessons_RightTapped(object sender, RightTappedRoutedEventArgs e)
    {
        currentitem = e.OriginalSource as ListViewItemPresenter;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-10-05
      • 1970-01-01
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多