wpf - 在 FSharp Interactive 中关闭 Wpf 应用程序
问题描述
我目前正在尝试与 WPF 一起进行一些 F# 编程。我正在尝试尽可能多地使用 FSI,但是如果我想运行一些 WPF 窗口,我不知道如何使用它。
创建一个简单的窗口后
let myWindow = Window()
let app = Application()
app.Run(myWindow)
如果我关闭窗口(使用 x),下次我尝试(alt+Enter)时会收到一条错误消息,说我不能在同一个 AppDomain 中app.Run(myWindow)
运行多个。System.Windows.Application
我应该以其他方式关闭窗口吗?我试图在关闭窗口后使用 app.Shutdown() 但它给出了一个错误,说 tat app 没有定义。
当窗口仍然打开时,FSI 没有响应。
第二个问题 - 有没有办法以某种方式对打开的窗口进行操作?我的意思是在运行时从 FSI 添加一些控件或修改现有控件?
可以从 FSI 运行以打开 WPF 窗口的 Sample.fsx 如下:
#I @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5"
#r "PresentationCore.dll"
#r "PresentationFramework.dll"
#r "System.Xaml.dll"
#r "WindowsBase.dll"
open System.Windows
open System.Windows.Controls
let buttonNames = [
"First button"
"Second button"
"Third button" ]
type StackPanel with
member stack.add x = stack.Children.Add x |> ignore
let createSmallButton text =
let myButton = Button(Content=text)
myButton.Height <- 40.
myButton.Width <- 100.
myButton
let myStack = StackPanel()
let buttons =
buttonNames
|> List.map createSmallButton
buttons |> List.iter myStack.add
let myWindow = Window()
myWindow.Content <- myStack
let app = Application()
app.Run(myWindow)
解决方案
推荐阅读
- ruby-on-rails - 错误:对于 xxx_postgres_1 无法启动服务 postgres:b'driver 在端点 dataimobi-engine_postgres_ 上编程外部连接失败
- php - PHP cUrl 句柄资源被一个整数替换
- excel - SSAS MDX 计算度量 - [ITEMS] 的 COUNT 个。[Item] 分组 [Items].[Item Group]
- xv6 - 如何在 virtualbox 或 vmware 上安装 xv6?
- sql - 在 SQL 查询和单独的 Ruby 文件之间传递数据
- javascript - 我的代码有什么问题[迭代结构]
- python - 发送数据,但结果显示 GET 请求而不是 POST
- three.js - 无法在three.js中对组中的单个对象进行光线投射以运行动画
- regex - 正则表达式匹配字符串的结尾并捕获字符串结尾之前的部分 perl
- python - 如何在 language.code 中包含区域?