0

当我从列表中选择一个项目时,整个选择过程会进行两次。

private void serving_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
{
    try
    {
        Debug.WriteLine("Serving added to diary");
        login(null, null);
    }
    catch (WebException)
    {
        Debug.WriteLine(e.Error);
    }
    ServingList.SelectedIndex = -1;
}

当我离开时,ServingList.SelectedIndex = -1;这个过程会继续进行一次。但我需要将选定的索引恢复到-1。

我错过了什么?

SelectionChanged 上的处理程序:

private void ServingList_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        Debug.WriteLine("\n[#] ServingList_SelectionChanged");
        Debug.WriteLine("Selected item:" + ServingList.SelectedIndex);
        Debug.WriteLine("ID of latest TP: " + tp.id);

        String itemid = tp.id;
        Produkt temp = (Produkt)ServingList.SelectedItem;

        if (servingid.Length < 1)
        {
            servingid = temp.servingid;
        }

        WebClient addserving = new WebClient();
        addserving.Credentials = new NetworkCredential(username.Text, passwort.Password);

        addserving.Encoding = System.Text.Encoding.GetEncoding("ISO-8859-1");
        addserving.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
        addserving.UploadStringAsync(new Uri("http://fddb.info/api/v8/diary/add_item.xml?apikey=ICPOKUI83555PU43"), "&item_id=" + itemid + "&serving_id=" + servingid);
        addserving.UploadStringCompleted += new UploadStringCompletedEventHandler(serving_UploadStringCompleted);
        Pivot.SelectedIndex = 0;

    }
4

1 回答 1

0

您正在导致无限循环。

你有你的列表框,改变它会导致一个动作

更改 X > 动作 X > 手柄 X > 更改 X (-1) > 动作 X

等等。

您需要对某个条件的循环进行某种形式的中断

private void serving_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e) 
{ 

     //Break condition
     if (ServingList.SelectedIndex != -1)
     {
        try 
        { 
            Debug.WriteLine("Serving added to diary"); 
            login(null, null); 
        } 
        catch (WebException) 
        { 
            Debug.WriteLine(e.Error); 
        } 
        ServingList.SelectedIndex = -1; 
     }
}

通过这样做,您只在需要时将其设置为 -1,否则即使它实际上已经设置,它也会不断地将所选索引设置为 -1。

于 2012-09-13T13:44:06.863 回答