将对象实例设置为另一个对象的实例不起作用

时间:2019-04-11 12:01:03

标签: c# object xamarin.forms uwp

我基本上是通过表单构造函数传递一个对象,然后尝试将另一个对象设置为已解析对象的实例不起作用,该值保持为null,请注意,此代码在其他内容页面上起作用。唯一的区别是我绑定到条目而不是标签。

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;
        }


    }

产品应包含传递的产品的值。

似乎正在发生的事情是,应用程序多次返回到原​​始页面,然后在停止时该产品现在为空。

上一页选择代码

 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 个答案:

答案 0 :(得分:1)

由于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本身,将很难猜测您要实现的目标。

尝试更加客观,设置一个断点。