gpt4 book ai didi

wpf - F#/WPF 事件绑定(bind)

转载 作者:行者123 更新时间:2023-12-03 18:27:36 24 4
gpt4 key购买 nike

如果有一种方法可以将 XAML 中定义的事件 Hook 到 member 的 F# 函数,我正在徘徊?当然,我可以用图解的方式来做,但这有点不方便。

最佳答案

我想问题是您是否可以使用 XAML 标记将 F# 成员指定为事件处理程序:

<Button x:Name="btnClick" Content="Click!" Click="button1_Click" />

据我所知,答案是 没有 .

这在 C# 中的工作方式是事件处理程序的注册是在设计器生成的 C# 代码(部分类)中完成的(您可以在名为 obj 的文件中的 MainForm.g.cs 目录中看到它)。 F# 对 WPF 设计器没有任何直接支持,因此它无法为您生成它。您必须编写代码以手动附加事件处理程序(但这很容易)。

我的 London talk about Silverlight 中有一些示例.您可以实现 ?运算符(operator)可以很好地访问 XAML 元素:
 type MainPage() as this =
inherit UserControl()
let uri = new System.Uri("/App;component/MainPage.xaml", UriKind.Relative)
do Application.LoadComponent(this, uri)

// Get button using dynamic access and register handler
let btn : Button = this?btnClick
do btnClick.Click.Add(fun _ -> (* ... *))
?我使用的运算符声明是:
let (?) (this : Control) (prop : string) : 'T = // '
this.FindName(prop) :?> 'T

关于wpf - F#/WPF 事件绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4149198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com