我基本上是通过表单构造函数传递一个对象,然后尝试将另一个对象设置为已解析对象的实例不起作用,该值保持为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;
}
}
<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));
代码行多次,然后停止时,该产品再次为空
在扫描代码时,我发现有第二个事件处理视图单元格项的轻敲,这是出了问题,我已通过删除第二个事件处理程序解决了该问题。
答案 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本身,将很难猜测您要实现的目标。
尝试更加客观,设置一个断点。