从FSI启动时,WPF窗口无法打开

时间:2014-07-18 16:17:49

标签: wpf f#-interactive

我有一个WPF窗口,当作为Windows应用程序运行时可以正常打开。我试图从FS Interactive推出它,但它不会打开。

我使用了建议here的生成函数:

> val ui : Lazy<System.Windows.Application * System.Threading.Thread> =
  Value is not created.

> val spawn : f:('a -> 'b) -> x:'a -> 'b

...但是当我使用

运行它时
spawn loadWindow ()

FSi窗口只返回Window属性:

> val it : Window =
>  System.Windows.Window
>    {ActualHeight = 0.0;
>     ActualWidth = 0.0;
>     AllowDrop = ?;
>     AllowsTransparency = ?;
>     AreAnyTouchesCaptured = ?;
>     AreAnyTouchesCapturedWithin = false;

以下是作为应用程序运行时可以正常工作的代码:

let loadWindow() =
   let window = MainWindow2()
   grid3()  |> window.MyStack.Children.Add |> ignore
   window.Root


[<STAThread>]
(new Application()).Run(loadWindow()) |> ignore

我从FSi引用了以下内容:

#r "System.Xaml.dll"
#r "UIAutomationTypes.dll"
#r "WindowsBase.dll"
#r "PresentationFramework.dll"
#r "PresentationCore.dll"
#r "C:\VS Projects\Numerics\packages\FSharpx.TypeProviders.Xaml.1.8.41\lib\40\FSharpx.TypeProviders.Xaml.dll"
open System
open System.Windows
open System.Windows.Controls
open FSharpx

任何建议都非常感谢!

1 个答案:

答案 0 :(得分:0)

我意识到自己的错误。

在返回窗口之前,我只需要一个win.Show()Application.Run()执行此操作,但是从spawn函数调用不会。