来自F#的WPF - 对事件作出反应

时间:2011-09-16 05:40:56

标签: wpf f#

我遇到以下示例的问题(稍微修改了专家F#书)

open System.Windows
open System.Windows.Controls
open System.Windows.Shapes
open System.Windows.Media
open System

let contentInit =
    let w = new Window(Topmost=true)
    let c = new Canvas()
    w.Content <- c

    let e = new Ellipse(Width=150., Height=150., Stroke=Brushes.Black)
    c.Children.Add(e) |> ignore

    e.MouseLeftButtonUp.Add(fun _ -> 
                                    e.Fill <- Brushes.Red
                                )
    w

let a = new Application()

[<EntryPoint>]
[<STAThread>]
let main (args: string []) =
    let myWin = contentInit
    do a.Run(myWin) |> ignore
    1

我期望的行为是,当点击(左)时椭圆被涂成红色,但点击椭圆时没有任何反应。你认为这可能是什么问题?

1 个答案:

答案 0 :(得分:1)

我认为问题是你的椭圆没有填充 - 尝试击中黑色部分或使用

let e = new Ellipse(Width=150., Height=150., Stroke=Brushes.Black, Fill = Brushes.White)

如果填充是空的,则不会执行Hittest - 你必须给它一些颜色(甚至是透明的)才能以这种方式工作。