F#Xamarin主页面/详细信息页面(用于汉堡菜单)

时间:2018-12-27 11:30:49

标签: xamarin xamarin.forms f#

我正在关注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"

我想念一些简单的东西吗?

1 个答案:

答案 0 :(得分:1)

不是F#问题。您定义的Title属性不是ContentPage属性Title,而是MenuPage属性。将您的MenuPage强制转换为ContentPage,您的Title定义将丢失。您当然需要:

type MenuPage() =
    inherit ContentPage()
    do base.Title <- "Menu"

type MenuPage() =
    inherit ContentPage(Title = "Menu")