带有ListBoxItem的上下文菜单

本文关键字:菜单 上下文 ListBoxItem 带有 | 更新日期: 2023-09-27 18:25:22

我正在ListBox下的xaml页面中使用ContextMenu来删除ListBoxItem。我面临的问题是,当我长按ListBoxItem时,会出现删除选项,该项目会被删除,但下次尝试时,其他项目不会被删除。有人能告诉我点击ContextMenu.Menuitem后如何检索列表框项目详细信息吗。这是我的密码。

private void deleteitem_Click(object sender, RoutedEventArgs e)
    {
        NavigationContext.QueryString.TryGetValue("username", out username);
        NavigationContext.QueryString.TryGetValue("password", out password);
        ListBoxItem selecteditem = this.sniplist.ItemContainerGenerator.ContainerFromItem((sender as MenuItem).DataContext) as ListBoxItem;
        Item item = selecteditem.DataContext as Item;
        HttpWebRequest deleterequest = (HttpWebRequest)WebRequest.Create(url);
        HttpWebResponse response=deleterequest.BeginGetResponse(new AsyncCallback(deleteitem),deleterequest) as HttpWebResponse;
        //MessageBox.Show("Your item has been deleted");
    }

删除项方法

private void deleteitem(IAsyncResult ar)
{
//throw new NotImplementedException();
HttpWebRequest request=(HttpWebRequest)ar.AsyncState;
HttpWebResponse response=(HttpWebResponse)request.EndGetResponse(ar);
if(response.StatusCode==HttpStatusCode.OK)
{
    using(Stream respstream=response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(respstream,
 System.Text.Encoding.UTF8);
                string parsestring = reader.ReadToEnd();
                Debug.WriteLine("Response data:" + parsestring);
            }
}
Deployment.Current.Dispatcher.BeginInvoke(() =>
    {
        items.Remove(item1);
        this.sniplist.ItemsSource = items;
        MessageBox.Show("You item has been deleted");
        if (sniplist.Items.Count == 0)
        {
            txt1.Text = "Please click + to add more items into your account";
        }
    });

     }
   }
 }

请帮帮我,两天以来我一直被困在这个问题上。

带有ListBoxItem的上下文菜单

我通过使用以下来解决问题

var item = ((MenuItem)sender).DataContext as ItemClass

ItemClass是包含不同项的绑定详细信息的类,