【发布时间】:2021-09-30 23:50:09
【问题描述】:
这个完全相同的代码在一小时前运行良好。 调整了一些东西,然后 ctrl+Z 回到这个状态 现在每次我在 android 模拟器上运行它时,当我尝试加载所有产品页面时它都会挂起并崩溃。 VS2019 通常有帮助,但在这种情况下没有:System.InvalidCastException: 'Specified cast is not valid.' - 尝试搜索,在这里我发现了其他一些类似的标题 问题,但情况不同。不知道发生了什么,在运行之前没有来自 IDE 的错误消息。 编辑#1:断点似乎在代码隐藏的末尾。 编辑#2:尝试了iOS和同样的问题,除了现在它崩溃时,IDE会弹出一个窗口:Main.iOS“UIApplication.Main(args,null,”AppDelegate“);”并读给我同样的错误。 - 再次感到困惑,因为一切正常。而且我已经好几天没看过 Main.cs 了,更不用说修改它了。
public class Product
{
public string UPC { get; set; }
public string Brand { get; set; }
public int Count { get; set; }
public string Manufacturer { get; set; }
public string Style { get; set; }
public string SellPrice { get; set; }
public double BuyPrice { get; set; }
public string Market { get; set; }
public bool Buying { get; set; }
public string BoxImage { get; set; }
}
<ContentPage.BindingContext>
<model:Product/>
</ContentPage.BindingContext>
<ContentPage.Content>
<StackLayout>
<ListView x:Name="productsListView">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="75"/>
<ColumnDefinition Width="75"/>
<ColumnDefinition Width="75"/>
</Grid.ColumnDefinitions>
<Label Text="{Binding UPC}"
Grid.Column="1" HorizontalTextAlignment="Center" VerticalTextAlignment="Center"/>
<Label Text="{Binding Brand}"
Grid.Column="2" HorizontalTextAlignment="End" VerticalTextAlignment="Center"/>
<Label Text="{Binding Count}"
Grid.Column="3" HorizontalTextAlignment="Start" VerticalTextAlignment="Center"/>
<Label Text="{Binding Market}"
Grid.Column="4" HorizontalTextAlignment="Center" VerticalTextAlignment="Center"/>
<Label Text="{Binding BuyPrice}"
Grid.Column="5" HorizontalTextAlignment="Center" VerticalTextAlignment="Center"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
public partial class AllProductsPage : ContentPage
{
public AllProductsPage()
{
InitializeComponent();
}
protected override void OnAppearing()
{
base.OnAppearing();
{
using (SQLiteConnection conn = new SQLiteConnection(App.DatabasePath))
{
conn.CreateTable<Product>();
var products = conn.Table<Product>().ToList();
productsListView.ItemsSource = products;
}
}
}
}
【问题讨论】:
-
你的 SellPrice 真的是一个字符串吗?
-
直到我想使用它,调用它,操作它,是的,它是一个空字符串,因为字符串自动可以为空
-
我相信您缺少列定义。
-
InvalidCastException是一个运行时异常,堆栈跟踪应该准确地显示导致它的行。如果您无法获得堆栈跟踪,请在调试器中单步执行,直到找到导致异常的行。 -
我也是这么想的。所以我把它加回去了。还是同样的问题。
标签: c# xaml listview xamarin.forms data-binding