Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 从.fs文件中的.xaml文件引用事件_Wpf_Xaml_F#_Fsxaml - Fatal编程技术网

Wpf 从.fs文件中的.xaml文件引用事件

Wpf 从.fs文件中的.xaml文件引用事件,wpf,xaml,f#,fsxaml,Wpf,Xaml,F#,Fsxaml,我想在XAML文件中声明一个事件,然后在fs文件中添加一个处理程序 XAML文件的上部类似(MouseRightButtonDown): ... F#文件包含: open FsXaml type MainWindow = XAML<"MainWindow.xaml", true> let mainwnd = new MainWindow() let wnd = mainwnd.Root 打开FsXaml 类型MainWindow=XAML 让mainwnd=newmainw

我想在XAML文件中声明一个事件,然后在fs文件中添加一个处理程序

XAML文件的上部类似(MouseRightButtonDown):


...
F#文件包含:

open FsXaml

type MainWindow = XAML<"MainWindow.xaml", true> 
let mainwnd = new MainWindow()
let wnd = mainwnd.Root
打开FsXaml
类型MainWindow=XAML
让mainwnd=newmainwindow()
设wnd=mainwnd.Root

有没有一种简单的方法来创建链接?

由于没有代码,您无法从XAML调用该方法,但需要从外部附加它:

let AboutStack_MouseRightButtonDown args =
    // do whatever you want, return unit

wnd.MouseRightButtonDown.Add(AboutStack_MouseRightButtonDown)
或例如

wnd.MouseRightButtonDown.Add(fun _ -> MessageBox.Show("Click!") |> ignore)

另一种方法是使用模型(DataContext)和绑定来发出命令,例如,我同意,设计模式是可行的。看起来很有趣。请注意,使用fsxaml2+,您实际上可以在类型本身中执行此操作。但是,您仍然需要自己连接它,因为我不提供事件的直接连接。我考虑过这一点,但考虑到命令的易用性,这需要做很多零碎的工作,而这些工作几乎没有什么好处/抄送@Funk@ReedCopsey我同意,当我们有命令并且仍然可以在“代码隐藏”中执行时,不需要直接连接。谢谢你的升级,这会让事情变得更顺利。
wnd.MouseRightButtonDown.Add(fun _ -> MessageBox.Show("Click!") |> ignore)