我正在关注this教程,该教程通过母版/详细信息页面创建汉堡菜单。
我使用“空白表单应用程序/多平台->应用程序”(F#)模板创建了一个新的Visual Studio 2017解决方案
然后我像这样将C#代码移植到F#
namespace ChickenSoftware.Hamburger
open Xamarin.Forms
type MenuPage() =
inherit ContentPage()
member this.Title = "Menu"
type HomePage() =
inherit ContentPage()
let stack = StackLayout(VerticalOptions = LayoutOptions.Center)
let label = Label(XAlign = TextAlignment.Center, Text = "Welcome to F# Xamarin.Forms!")
do
stack.Children.Add(label)
type RootPage() =
inherit MasterDetailPage()
type App() =
inherit Application()
let menuPage = new MenuPage()
let homePage = new HomePage()
let rootPage = new RootPage()
do
let navigationPage = new NavigationPage(homePage)
rootPage.Master <- menuPage
rootPage.Detail <- navigationPage
base.MainPage <- rootPage
当我尝试运行它时,在第26行出现此异常
标题属性必须在母版页上设置
谷歌搜索了一下,我发现问题可能是需要在MenuPage的.ctor中调用InitializeComponent()方法。但是,我似乎找不到这样的
type MenuPage() =
inherit ContentPage()
do
base.InitializeComponent()
member this.Title = "Menu"
我想念一些简单的东西吗?
答案 0 :(得分:1)
不是F#问题。您定义的Title属性不是ContentPage属性Title,而是MenuPage属性。将您的MenuPage强制转换为ContentPage,您的Title定义将丢失。您当然需要:
type MenuPage() =
inherit ContentPage()
do base.Title <- "Menu"
或
type MenuPage() =
inherit ContentPage(Title = "Menu")