指定的演员表无效(xamarin 形式)
Posted
技术标签:
【中文标题】指定的演员表无效(xamarin 形式)【英文标题】:Specified cast is not valid (xamarin forms) 【发布时间】: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
是一个运行时异常,堆栈跟踪应该准确地显示导致它的行。如果您无法获得堆栈跟踪,请在调试器中单步执行,直到找到导致异常的行。
我也是这么想的。所以我把它加回去了。还是同样的问题。
【参考方案1】:
我不知道为什么,但在 <Grid></Grid>
周围添加 <ViewCell></ViewCell>
似乎可以让它在某种程度上发挥作用。
至少我现在可以继续前进,但我真的希望有人能解释一下。 为什么会这样?为什么不清楚(在 IDE 或文档中)?
【讨论】:
ListView 仅支持单元格类型。如果您想使用没有单元格的普通模板,请使用 CollectionView。不幸的是,抛出的异常并不清楚根本原因以上是关于指定的演员表无效(xamarin 形式)的主要内容,如果未能解决你的问题,请参考以下文章
解析Google Directions API时出错(指定的演员表无效)
Xamarin 形式:System.InvalidCastException:'指定的转换无效