Установка экземпляра объекта на экземпляр другого объекта не работает - PullRequest
1 голос
/ 11 апреля 2019

Я в основном пропускаю объект через конструктор формы, а затем пытаюсь установить другой объект для экземпляра разобранного объекта, который не работает, значение остается нулевым, обратите внимание, что этот код работал на другой странице содержимого.Разница лишь в том, что я привязываю записи, а не метки.

public partial class CatoSelectUWP : ContentPage
    {
        public static Product prod;

        public CatoSelectUWP(Product product)
        {
            InitializeComponent();
            App.isHandeled = true;
            prod = product;
        }

        protected override void OnAppearing()
        {
            pcodetxt.Text = prod.PROD.ToString();
            desctxt.Text = prod.PDSC.ToString();
            brndtxtUWP.Text = prod.PBRN.ToString();
            coltxtuwp.Text = prod.PCOL.ToString();
            packtxtuwp.Text = prod.PPCD.ToString();
            sellingtxtUWP.Text = prod.SELL.ToString();
            iqtytxt.Text = prod.IQTY.ToString();
            pskutxtUWP.Text = prod.PSKU.ToString();
            sizetxtUWP.Text = prod.PSZE.ToString();
            App.isHandeled = false;
        }


    }

prod должен содержать значения переданного продукта.

Кажется, что происходит, когда приложение возвращается кИсходная страница несколько раз, а затем при ее остановке продукт становится пустым.

Код выбора предыдущей страницы

 private async void LVUWP_ItemSelected(object sender, SelectedItemChangedEventArgs e)
        {
            try
            {
                if (stat == false&& App.isHandeled == false)
                {
                    var obj = (Product)e.SelectedItem;
                    Product prodselect = new Product(obj.PROD, obj.DPID, obj.SDID, obj.CGID, obj.SCID, obj.PDSC, obj.PBRN,
                        obj.SESN, obj.IQTY, obj.CURR, obj.SELL, obj.PSKU, obj.PSZE, obj.PCOL, obj.PPCD, obj.DPDS);

                    App.isHandeled = true;

                    await Navigation.PushAsync(new CatoSelectUWP(prodselect));

                }

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

Xaml


<ContentPage.Content>

        <ScrollView>

            <StackLayout Margin="20">

                <StackLayout>

                    <Image
                        Aspect="AspectFit"
                        HeightRequest="300"
                        Source="shoe1.jpg"
                        WidthRequest="300" />

                </StackLayout>



                <StackLayout HorizontalOptions="Center" Orientation="Vertical">

                    <Label
                        HorizontalOptions="Fill"
                        Text="Product Code:"
                        TextColor="{x:StaticResource Key=ColorBlue}" />

                    <Entry
                        x:Name="pcodetxt"
                        HorizontalOptions="End"
                        HorizontalTextAlignment="Center"
                        IsEnabled="False"
                        Text="Product Code"
                        TextColor="{x:StaticResource Key=ColorBlue}"
                        WidthRequest="500" />

                    <Label
                        HorizontalOptions="Start"
                        Text="Description:"
                        TextColor="{x:StaticResource Key=ColorBlue}" />

                    <Entry
                        x:Name="desctxt"
                        HorizontalOptions="End"
                        HorizontalTextAlignment="Center"
                        IsEnabled="False"
                        Text="Description"
                        TextColor="{x:StaticResource Key=ColorBlue}"
                        WidthRequest="500" />

                    <Label
                        HorizontalOptions="Start"
                        Text="Brand:"
                        TextColor="{x:StaticResource Key=ColorBlue}" />

                    <Entry
                        x:Name="brndtxtUWP"
                        HorizontalOptions="End"
                        HorizontalTextAlignment="Center"
                        IsEnabled="False"
                        Text="Brand"
                        TextColor="{x:StaticResource Key=ColorBlue}"
                        WidthRequest="500" />

                    <Label
                        HorizontalOptions="Start"
                        Text="Colours Available:"
                        TextColor="{x:StaticResource Key=ColorBlue}" />

                    <Entry
                        x:Name="coltxtuwp"
                        HorizontalOptions="End"
                        HorizontalTextAlignment="Center"
                        IsEnabled="False"
                        Text="Colours Available"
                        TextColor="{x:StaticResource Key=ColorBlue}"
                        WidthRequest="500" />

                    <Label
                        HorizontalOptions="Start"
                        Text="Available Packs:"
                        TextColor="{x:StaticResource Key=ColorBlue}" />

                    <Entry
                        x:Name="packtxtuwp"
                        HorizontalOptions="End"
                        HorizontalTextAlignment="Center"
                        IsEnabled="False"
                        Text="Available Packs"
                        TextColor="{x:StaticResource Key=ColorBlue}"
                        WidthRequest="500" />

                    <Label
                        HorizontalOptions="Start"
                        Text="selling Price:"
                        TextColor="{x:StaticResource Key=ColorBlue}" />

                    <Entry
                        x:Name="sellingtxtUWP"
                        HorizontalOptions="End"
                        HorizontalTextAlignment="Center"
                        IsEnabled="False"
                        Text="Unit Price"
                        TextColor="{x:StaticResource Key=ColorBlue}"
                        WidthRequest="500" />

                    <Label
                        HorizontalOptions="Start"
                        Text="Issue Quantity:"
                        TextColor="{x:StaticResource Key=ColorBlue}" />

                    <Entry
                        x:Name="iqtytxt"
                        HorizontalOptions="End"
                        HorizontalTextAlignment="Center"
                        IsEnabled="False"
                        Text="Unit Price"
                        TextColor="{x:StaticResource Key=ColorBlue}"
                        WidthRequest="500" />

                    <Label
                        HorizontalOptions="Start"
                        Text="Product SKU:"
                        TextColor="{x:StaticResource Key=ColorBlue}" />

                    <Entry
                        x:Name="pskutxtUWP"
                        HorizontalOptions="End"
                        HorizontalTextAlignment="Center"
                        IsEnabled="False"
                        Text="Unit Price"
                        TextColor="{x:StaticResource Key=ColorBlue}"
                        WidthRequest="500" />

                    <Label
                        HorizontalOptions="Start"
                        Text="Sizes:"
                        TextColor="{x:StaticResource Key=ColorBlue}" />

                    <Entry
                        x:Name="sizetxtUWP"
                        HorizontalOptions="End"
                        HorizontalTextAlignment="Center"
                        IsEnabled="False"
                        Text="Unit Price"
                        TextColor="{x:StaticResource Key=ColorBlue}"
                        WidthRequest="500" />



                </StackLayout>

            </StackLayout>

        </ScrollView>

Что, кажется, происходит

Я установил точку останова, чтобы объяснить, что происходит, если продукт получает правильные значения, а затем по какой-то причине несколько раз возвращается к строке кода

 await Navigation.PushAsync(new CatoSelectUWP(prodselect)); 

, а затем, когда он останавливается, продукт снова становится пустым.

Решено

При сканировании кода я заметил, что было второе событие, которое обрабатывает нажатие элемента ячейки вида, и это ошибка, и я исправил проблему, удалив второе событие.обработчик.

1 Ответ

1 голос
/ 11 апреля 2019

Что-то странное в вашей реализации, поскольку в выражении else:

 else if (stat == true && App.isHandeled == false)
            {
                var obj = (Product)e.SelectedItem;
                App.isHandeled = true;
                Product prodselect = new Product(obj.PROD, obj.DPID, obj.SDID, obj.CGID, obj.SCID, obj.PDSC, obj.PBRN,
                    obj.SESN, obj.IQTY, obj.CURR, obj.SELL, obj.PSKU, obj.PSZE, obj.PCOL, obj.PPCD, obj.DPDS);

вы ничего не делаете с prodselect ...

Будет очень трудно догадаться, чтовы пытаетесь достичь без самого себя самого xaml.

Постарайтесь быть более объективным, установите точку останова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...