在没有XAML的情况下,如何使用F#和WPF创建Hello World应用程序?
如何在没有XAML的情况下使用F#和WPF创建Hello World应用程序? 具体来说,实现这一目标的步骤是什么 例如,启动应用程序需要哪些文件 [更新] 我尝试了一些建议,但收到以下错误: 我验证了该项目被设置为启动项目。在没有XAML的情况下,如何使用F#和WPF创建Hello World应用程序?,wpf,f#,Wpf,F#,如何在没有XAML的情况下使用F#和WPF创建Hello World应用程序? 具体来说,实现这一目标的步骤是什么 例如,启动应用程序需要哪些文件 [更新] 我尝试了一些建议,但收到以下错误: 我验证了该项目被设置为启动项目。 我不知道我还需要做什么。首先要理解的是:XAML只是一种(据说更简洁)表示对象图的方法。(顺便说一句,XAML不需要指定WPF UI,理论上它可以用于其他事情) XAML标记对应于实例化的.NET类,属性和嵌套标记(大致)对应于对象属性。除此之外没有什么魔力。所有XAM
我不知道我还需要做什么。首先要理解的是:XAML只是一种(据说更简洁)表示对象图的方法。(顺便说一句,XAML不需要指定WPF UI,理论上它可以用于其他事情) XAML标记对应于实例化的.NET类,属性和嵌套标记(大致)对应于对象属性。除此之外没有什么魔力。所有XAML所做的只是创建一组对象并将它们连接在一起 例如,这:
<Button x:Name="myButton">Click!</Button>
(附加属性、绑定、类型转换器等确实会变得更复杂一些,但我在这里不作详细介绍)
第二个要知道的关键是如何对入口点进行编码。为此,有三个简单的步骤:
应用程序
Application.main窗口
应用程序。运行
下面是一个最小的全功能应用程序(以F#脚本的形式):
#r“WindowsBase”
#r“展示中心”
#r“呈现框架”
开放系统
打开System.Windows.Controls
让按钮=按钮(Content=“单击我!”)
let label=label(Content=“Hello”)
button.Click.Add(乐趣->标签.Content以原始答案为基础:
我必须将项目的输出库设置为Windows。
然后我不得不添加STAThread属性。
代码如下:
module Temp
open System.Windows
open System.Windows.Controls
open System
[<STAThread>] do ()
let button = Button(Content="Click me!")
let label = Label(Content="Hello")
button.Click.Add (fun _ -> label.Content <- "World")
let layout = StackPanel()
layout.Children.Add label |> ignore
layout.Children.Add button |> ignore
let window =
Window(
Content = layout,
Visibility = Visibility.Visible)
let app = Application(MainWindow = window)
app.Run() |> ignore
模块温度
开放系统
打开System.Windows.Controls
开放系统
[]do()
让按钮=按钮(Content=“单击我!”)
let label=label(Content=“Hello”)
button.Click.Add(乐趣->标签.内容忽略
layout.Children.Add按钮|>忽略
让窗口=
窗口(
内容=布局,
可见性=可见性。可见)
让应用程序=应用程序(主窗口=窗口)
app.Run()|>忽略
oops。好的。它被保存了。可以找到一个简单的MVC方法提示-Library1.fs
-为什么VS给文件起这个名字?谢谢。我发布了完整的答案。
#r "WindowsBase"
#r "PresentationCore"
#r "PresentationFramework"
open System.Windows
open System.Windows.Controls
let button = Button(Content="Click me!")
let label = Label(Content="Hello")
button.Click.Add (fun _ -> label.Content <- "World")
let layout = StackPanel()
layout.Children.Add label
layout.Children.Add button
let window =
Window(
Content = layout,
Visibility = Visibility.Visible)
let app = Application(MainWindow = window)
app.Run()
module Temp
open System.Windows
open System.Windows.Controls
open System
[<STAThread>] do ()
let button = Button(Content="Click me!")
let label = Label(Content="Hello")
button.Click.Add (fun _ -> label.Content <- "World")
let layout = StackPanel()
layout.Children.Add label |> ignore
layout.Children.Add button |> ignore
let window =
Window(
Content = layout,
Visibility = Visibility.Visible)
let app = Application(MainWindow = window)
app.Run() |> ignore