添加命名空间后,WPF窗口不会打开

时间:2014-10-14 05:11:34

标签: wpf f#

所以我有简单的F#WPF应用程序。它没有声明命名空间和使用多个模块,工作得很好。

现在,它仍在编译,但根本无所作为。调试中没有任何内容可以显示。

这是当前不起作用的代码。

namespace Flow

module MainApp =

    open System
    open System.Windows

    let app1 = new Application()
    [<STAThread>]
    app1.Run(new Main.MainWindow()) |>ignore
在它工作之前

就像这样

module MainApp 

open System
open System.Windows


let app1 = new Application()
[<STAThread>]
app1.Run(new Main.MainWindow()) |>ignore

我可以显示MainWindow的定义,但它很长,它是一个继承自Window的类。 如果有帮助,请告诉我。或者,如果有任何其他信息我可以提供,这将有助于解决这个问题。

1 个答案:

答案 0 :(得分:3)

您的原始代码依赖于implicit entry point

  

&#34;当程序没有明确指示入口点的EntryPoint属性时,最后一个要编译的文件中的顶级绑定将用作入口点。&#34;

您可以在模块中定义一个函数,并将其明确标记为入口点:

namespace Flow

module MainApp =

    open System
    open System.Windows

    let app1 = new Application()

    [<EntryPoint>]
    [<STAThread>]
    let main args =
        app1.Run(new Window())

或者您可以通过在模块名称中包含命名空间来继续使用隐式入口点:

module Flow.MainApp 

open System
open System.Windows

let app1 = new Application()

[<STAThread>]
app1.Run(new Window()) |>ignore