指定的演员表无效(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】:

我不知道为什么,但在 &lt;Grid&gt;&lt;/Grid&gt; 周围添加 &lt;ViewCell&gt;&lt;/ViewCell&gt; 似乎可以让它在某种程度上发挥作用。

至少我现在可以继续前进,但我真的希望有人能解释一下。 为什么会这样?为什么不清楚(在 IDE 或文档中)?

【讨论】:

ListView 支持单元格类型。如果您想使用没有单元格的普通模板,请使用 CollectionView。不幸的是,抛出的异常并不清楚根本原因

以上是关于指定的演员表无效(xamarin 形式)的主要内容,如果未能解决你的问题,请参考以下文章

解析Google Directions API时出错(指定的演员表无效)

Xamarin 形式:System.InvalidCastException:'指定的转换无效

Xamarin 形式:System.InvalidCastException:“指定的强制转换无效。”

指定的演员表无效 - 浮动

自动映射器显示错误“指定的演员表无效。”

指定的演员对日期选择器无效