在.fs文件中引用.xaml文件中的事件

时间:2015-06-12 15:27:30

标签: wpf xaml f# fsxaml

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

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

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="AboutStack" MouseRightButtonDown="AboutStack_MouseRightButtonDown"
Title="About" SizeToContent="WidthAndHeight">
    <StackPanel>...

F#文件包含:

open FsXaml

type MainWindow = XAML<"MainWindow.xaml", true> 
let mainwnd = new MainWindow()
let wnd = mainwnd.Root

有没有简单的方法来建立链接?

1 个答案:

答案 0 :(得分:3)

由于没有代码隐藏,你无法从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)和绑定来引发命令,参见例如Visual Studio Template for F# Windows App (WPF, MVVM)