2014-06-11 167 views
0

目標:
右鍵單擊空白區域時,右側菜單不會顯示。第二張圖是錯誤的。右鍵單擊後不顯示菜單

問題:
我應該如何啓用它?我不知道正確的語法代碼。

 private void lvw_bokade_MouseRightButtonUp(object sender, MouseButtonEventArgs e) 
     { 
      ListView selectedData = (ListView)sender; 

      List myList= (List) selectedData.SelectedItem; 

      ContextMenu myContextMenu = new ContextMenu(); ; 

      if (MouseButtonState.Released == e.RightButton && myList.Test!= "") 
      { 
       MenuItem menuItem3 = new MenuItem(); 
       menuItem3.Header = "Add quantity"; 
       myContextMenu.Items.Add(menuItem3); 

       MenuItem menuItem2 = new MenuItem(); 
       menuItem2.Header = "Delete"; 
       myContextMenu.Items.Add(menuItem2); 
      } 

      myContextMenu.IsOpen = true; 
     } 

XAML代碼:

<TabItem Header="Bokade"> 
     <Grid Background="#FFE5E5E5"> 
      <ListView x:Name="lvw_bokade" HorizontalAlignment="Left" ItemsSource="{Binding}" SelectionMode="Single" Height="335" Margin="10,46,0,0" VerticalAlignment="Top" Width="561" MouseRightButtonUp="lvw_bokade_MouseRightButtonUp"> 
       <ListView.View> 
        <GridView> 
         <GridViewColumn Header="Fornamn" Width="auto" DisplayMemberBinding="{Binding Path=Fornamn }" TextBlock.TextAlignment="Left" /> 
         <GridViewColumn Header="Efternamn" Width="auto" DisplayMemberBinding="{Binding Path=Efternamn}" TextBlock.TextAlignment="Left" /> 
         <GridViewColumn Header="Kortnummer" Width="auto" DisplayMemberBinding="{Binding Path=Kortnummer}" TextBlock.TextAlignment="Center" /> 
         <GridViewColumn Header="Personnummer" Width="auto" DisplayMemberBinding="{Binding Path=Personnummer}" TextBlock.TextAlignment="Center" /> 
         <GridViewColumn Header="Avprickad" Width="auto" DisplayMemberBinding="{Binding Path=Avprickad }" TextBlock.TextAlignment="Center" /> 
        </GridView> 
       </ListView.View> 
      </ListView> 
      <Button Content="Ny plats" HorizontalAlignment="Left" Margin="10,21,0,0" VerticalAlignment="Top" Width="75"/> 
     </Grid> 
    </TabItem> 

enter image description here

+0

1 - 請用英文專編碼。 2 - 刪除所有可怕的代碼並使用正確的XAML。 3 - 通過「ListView.ItemContainerStyle」設置ListViewItem.ContextMenu屬性。 –

+0

請再次看看代碼。 –

+0

我的觀點依然存在。刪除所有代碼並使用'ListView.ItemContainerStyle'設置ListViewItem的ContextMenu。 –

回答

0
private void lvw_bokade_MouseRightButtonUp(object sender, MouseButtonEventArgs e) 
{ 
      ListView selectedData = (ListView)sender; 

      Passlista myPasslista = (Passlista)selectedData.SelectedItem; 

      System.Windows.Point pt = e.GetPosition(this); 

      if (myPasslista != null && !(System.Windows.Media.VisualTreeHelper.HitTest(this, pt).VisualHit is ScrollViewer)) 
      { 
       ContextMenu myContextMenu = new ContextMenu(); ; 

       if (MouseButtonState.Released == e.RightButton && myPasslista.Instruktor != "") 
       { 
        MenuItem menuItem3 = new MenuItem(); 
        menuItem3.Header = "Add quantity"; 
        myContextMenu.Items.Add(menuItem3); 

        MenuItem menuItem2 = new MenuItem(); 
        menuItem2.Header = "Delete"; 
        myContextMenu.Items.Add(menuItem2); 
       } 

       myContextMenu.IsOpen = true; 
      } 
} 
0

使用ListView.ItemContainerStyle設置ListViewItem的文本菜單,如下所示。您無需訂閱MouseRightButtonUp活動。

<ListView.Resources> 
     <!-- Setup the context menu --> 
     <ContextMenu x:Key="ItemContextMenu"> 
      <!-- Add menu items to the context menu --> 
      <MenuItem Header="Add quantity" Command="{Binding Path=DataContext.AddQuantityCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListView}}" /> 
      <MenuItem Header="Delete" Command="{Binding Path=DataContext.DeleteQuantityCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListView}}" /> 
      <MenuItem Header="More Details." /> 
     </ContextMenu> 
    </ListView.Resources> 

    <ListView.ItemContainerStyle> 
     <Style TargetType="{x:Type ListViewItem}"> 
      <!-- Set the context menu for the ListViewItem to be the ItemContextMenu--> 
      <Setter Property="ContextMenu" Value="{StaticResource ItemContextMenu}" /> 
     </Style> 
    </ListView.ItemContainerStyle> 

    <ListView.View> 
     <GridView> 
      <GridViewColumn Width="140" Header="OrderId" DisplayMemberBinding="{Binding Path=OrderId}" /> 
      <GridViewColumn Width="140" Header="Name" DisplayMemberBinding="{Binding Path=Name}" /> 
      <GridViewColumn Width="140" Header="Quantity" DisplayMemberBinding="{Binding Path=Quantity}" /> 
     </GridView> 
    </ListView.View> 

</ListView>