2014-09-28 5 views
7

Ich habe ein Problem mit dem MenuFlyout. Ich versuche, ein Kontextmenü zu bekommen, das gut funktioniert, um dem Benutzer die Optionen 'Löschen' und 'Bearbeiten' zu geben. Aber wenn der Benutzer auf eine dieser Optionen klickt, scheint es keine Lösung zu geben, wie man die Listenansicht oder das ausgewählte Objekt erhält. Vielleicht bin ich nur verwirrt über etwas, aber ich suchte den ganzen Tag und obwohl die Leute ähnliche Probleme hatten, funktionierte keine der Lösungen für mich.Wie wird ein 'ContextMenu' in einem ListView für Windows Phone 8.1 korrekt eingerichtet?

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); 
    } 

Antwort

8

Sobald Ihre Click-Ereignis ausgelöst wird, können Sie die Datacontext des Framework bekommen.

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) 
} 
+0

Danke, dass funktioniert genau so, wie ich es wollte. – Cort3vl

Verwandte Themen