在将按钮的命令绑定到动作之后,我调用一个公开progress事件的对象.
event System.EventHandler<ProgressChangedEventArgs> ProgressChanged
我想以最好的方式在我的XAML中显示它.
一种方法是在我的VM中公开两个可绑定字段
member x.Iteration with get()     = _iteration
                   and set(v:int) = _iteration <- v
                                    x.NotifyPropertyChanged <@this.Iteration@>
member x.IterationVisible with get()      = _iterationVisible
                          and set(v:bool) = _iterationVisible <- v
                                            x.NotifyPropertyChanged <@this.IterationVisible@>
然后我被调用来执行动作我只会更新属性
member x.CompleteInference(algorithm:IGeneratedAlgorithm) =
    x.IterationVisible <- true
    algorithm.ProgressChanged.Add(fun args -> x.Iteration <- args.Iteration)
    algorithm.run()
    x.IterationVisible <- false
这导致了两个问题:
是否有一个直接的方式F#揭露progressChanged事件,而无需通过这种中间去Iteration属性,可以通过WPF来处理?它是我们可以得到/做的最具声明性的我们总是要在某个地方存储一些状态吗?
另外,是否有一种自然的方式来完全在XAML中进行 "状态机"绑定?