无法将ContentPage类型的对象强制转换为ContentPage类型

时间:2017-06-07 07:55:11

标签: c# xamarin casting

所以我目前正在开发我的第一个Xamarin应用程序。 我有一个带有菜单的MasterDetailPage,当你点击左边的一个菜单项时,我保存了我正在使用的对象(到文件系统),我创建了一个新的' ContentPage'对于他们选择的页面,并将对象作为构造函数参数传递。

然后我尝试将MasterDetailPage Detail对象设置为(ContentPage)obj,它是他们选择的内容页面的演员。

ContentPage class

现在您可以看到,JobDetails的基础是ContentPage,但我无法将其转换为内容页面!?

obj object

我也尝试过转换为Page而无济于事。

在谈到投射时,我是否缺少一些基本知识,或者在这里发生了什么?

1 个答案:

答案 0 :(得分:1)

我已经解决了这个问题。 问题不在于内容页面强制转换(从obj>内容页面进行投射),而是因为我在JobDetails页面中有一些不正确的xaml。

违规的xaml是

<ListView Grid.Row="3" Grid.ColumnSpan="2" Grid.Column="0" x:Name="KeySkillsList">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto"></RowDefinition>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"></ColumnDefinition>
                                <ColumnDefinition Width="Auto"></ColumnDefinition>
                            </Grid.ColumnDefinitions>

                            <Label Grid.Row="0" Grid.Column="0"  Text="{Binding Name, Mode=TwoWay}"></Label>

                            <Switch Grid.Row="0" Grid.Column="1" IsToggled="{Binding Value, Mode=TwoWay}"></Switch>
                        </Grid>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

这是因为我误解了列表视图(和开关!) 具体的违规行是,该页面已经注释掉了。

我现在已经改变了它,这只是一个普通的列表视图,带有1个switchcell,带有Text属性。