Почему ToolKit-ListPicker застревает?

Я использовал Toolkit-Windows Phone 8 для средства выбора списков в качестве элемента управления выбора поля со списком, однако в определенные моменты времени элемент управления средством выбора списка не закрывал всплывающее окно (в основном в полноэкранном режиме). Так как List Picker обрабатывает событие нажатия клавиши назад, он не работает с приложением. Кроме того, если вы обработали резюме своего приложения, то вы застряли в этом окне, и я проверил, к какому URL-приложению относится приложение. Затем я нашел следующий URL из метода RootFrame_Navigating.

Microsoft.Phone.Controls.Toolkit; компонент /ListPicker/ListPickerPage.xaml

Кроме того, я попытался воссоздать эту ошибку, и я считаю, что иногда невозможно восстановить. Поэтому я хотел бы знать, что кто-либо испытывает эту ошибку и каково будет решение для этого? Спасибо

введите описание изображения здесь

Код, связанный с Listpicker

<toolkit:ListPicker x:Name="cmbinvoice"  
                                            ItemsSource="{Binding Path=listinvoices}"                                              
                                            Grid.Column ="0" 
                                            Grid.ColumnSpan="2"   
                                            RenderTransformOrigin="0.5,0.5" 
                                            ExpansionMode="FullscreenOnly" 
                                            Foreground="Black" 
                                            Background="White"  
                            FullModeHeader="Invoice"
                                            Margin="15,90,10,-123" FontWeight="Bold" TabIndex="2147483645" Tag="" SelectionChanged="cmbinvoice_SelectionChanged"    >
                <toolkit:ListPicker.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding invoiceno}" />
                    </DataTemplate>
                </toolkit:ListPicker.ItemTemplate>
                <toolkit:ListPicker.FullModeItemTemplate>
                    <DataTemplate>
                        <StackPanel Margin="16 15 0 15"  Orientation="Horizontal" >
                            <TextBlock Text="{Binding invoiceno}"
                                       Margin="0 0 0 0"
                                       FontSize="30" 
                                       FontFamily="{StaticResource PhoneFontFamilyLight}"/>
                        </StackPanel>
                    </DataTemplate>
                </toolkit:ListPicker.FullModeItemTemplate>
            </toolkit:ListPicker>

Код позади

     cmbinvoice.ItemsSource = vm.invoiceh; //When the Page Starts 

private void cmbinvoice_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            invoiceno = "";
            vm.invoiced.Clear();
            vm.invoicep.Clear();
            if (cmbinvoice.SelectedIndex != -1 && vm.invoiceh[cmbinvoice.SelectedIndex].invoiceno != "Select One")
            {
                invoiceno = vm.invoiceh[cmbinvoice.SelectedIndex].invoiceno;
                vm.cancelphase2setup(invoiceno);
                invpayments.ItemsSource = vm.invoicep;
                invitems.ItemsSource = vm.invoiced;
                lblcustomer.Text = vm.invoiceh[cmbinvoice.SelectedIndex].customer;
                lbltotal.Text = vm.invoiceh[cmbinvoice.SelectedIndex].amount.ToString("N2");
                lbldate.Text = string.Format("{0:dd-MMM-yyyy}", vm.invoiceh[cmbinvoice.SelectedIndex].invoicedate.Date);
            }
            else
            {
                lbldate.Text = "";
                lbltotal.Text = "";
                lblcustomer.Text = "";
            }
        }

ViewModel Code

Когда страница начинается

public void cancelsetup()
        {
            int customer = APPCommon.customerid;
            //var query = from InvoiceHeader oh in APPCommon.SFADB where oh.CustomerID == customer && oh.Deleted == false && oh.InvoiceDate == APPCommon.TransactionDate select oh;

            invoiceh.Add(new InvHead() { customerid = 0, amount = 0, customer = "", invoicedate = APPCommon.TransactionDate, invoiceno = "Select One" });

            foreach (string x in APPCommon.invnos)
                foreach (InvoiceHeader oh in from InvoiceHeader oh in APPCommon.SFADB where oh.CustomerID == customer && oh.Deleted == false && oh.InvoiceDate == APPCommon.TransactionDate && oh.InvoiceNo == x orderby oh.InvoiceNo descending select oh)
                    if (!(from OutstandingSettlementsDetail O in APPCommon.SFADB where O.InvoiceNo == oh.InvoiceNo select O).Any())
                        invoiceh.Add(new InvHead() { customerid = oh.CustomerID, amount = oh.NetAmount, customer = APPCommon.CustomerName, invoicedate = oh.InvoiceDate, invoiceno = oh.InvoiceNo });
        }

Когда вы выбираете Listpicker

public void cancelphase2setup(string invoiceno)
        {
            if (invoiceno == "") return;

            foreach (InvoicePayment ip in from InvoicePayment ip in APPCommon.SFADB where ip.InvoiceNo == invoiceno select ip)
            {
                string pt = (from PaymentType p in APPCommon.SFADB where p.ID == ip.PaymentTypeID select p.Name).FirstOrDefault();
                invoicep.Add(new InvPayment() { Amount = ip.Amount, invoiceno = ip.InvoiceNo, invpaymentno = ip.InvoicePaymentNo, type = pt, typeid = ip.PaymentTypeID });
                pt = null;
            }

            foreach (InvoiceDetail id in from InvoiceDetail id in APPCommon.SFADB where id.InvoiceNo == invoiceno select id)
            {
                string im = (from ItemMaster i in APPCommon.SFADB where i.ID == id.ItemMasterID select i.Name).FirstOrDefault();
                invoiced.Add(new InvDetail() { BatchNo=id.BatchNo, DiscountPercentage = id.DiscountPerc, invoiceno = id.InvoiceNo, ItemMasterID = id.ItemMasterID, ItemMasterName = im, NBT = id.NBTPerc, Quantity = id.Qty, Total = id.NetAmount, UnitPrice = id.Price, VAT = id.VATPerc });
                im = null;
            }

            string key = (from ExchangeHeader e in APPCommon.SFADB where e.InvoiceNo == invoiceno select e.ExchangeNo).FirstOrDefault();

            if (key != null)
                foreach (var e in from ExchangeDetail e in APPCommon.SFADB where e.ExchangeNo == key select e)
                {
                    string im = (from ItemMaster i in APPCommon.SFADB where i.ID == e.ItemMasterID select i.Name).FirstOrDefault();
                    invoiced.Add(new InvDetail() { exchange = true, rtn = false, BatchNo = e.BatchNo, DiscountPercentage = 0, invoiceno = invoiceno, ItemMasterID = e.ItemMasterID, ItemMasterName = im, NBT = 0, Quantity = (double)e.Qty, Total = (decimal)e.NetAmount, UnitPrice = (decimal)e.UnitPrice, VAT = 0 });
                    im = null;
                }

            key = (from ReturnHeader e in APPCommon.SFADB where e.InvoiceNo == invoiceno select e.ReturnNo).FirstOrDefault();

            if (key != null)
                foreach (var e in from ReturnDetail e in APPCommon.SFADB where e.ReturnNo == key select e)
                {
                    string im = (from ItemMaster i in APPCommon.SFADB where i.ID == e.ItemMasterID select i.Name).FirstOrDefault();
                    invoiced.Add(new InvDetail() { exchange = false, rtn = true, BatchNo = e.BatchNo, DiscountPercentage = 0, invoiceno = invoiceno, ItemMasterID = e.ItemMasterID, ItemMasterName = im, NBT = 0, Quantity = (double)e.Qty, Total = (decimal)e.NetAmount, UnitPrice = (decimal)e.Price, VAT = 0 });
                    im = null;
                }
        }

1 ответ

Решение

В инструментарии есть ошибка, которую нельзя исправить, если вы не разработчик.

Другие вопросы по тегам