F#:使用INotifyPropertyChanged进行数据绑定

rys*_*ama 14 data-binding f# inotifypropertychanged

如何实现INotifyPropertyChanged以用于F#类型?谢谢!

kvb*_*kvb 18

它与任何其他语言基本相同:

open System.ComponentModel
type MyType() =
  let ev = new Event<_,_>()
  let mutable str = ""
  member x.StringProp
    with get() = str
     and set(str') =
       str <- str'
       ev.Trigger(x, PropertyChangedEventArgs("StringProp"))
  interface INotifyPropertyChanged with
    [<CLIEvent>]
    member x.PropertyChanged = ev.Publish
Run Code Online (Sandbox Code Playgroud)

  • 这与其他语言并不"基本相同":P (13认同)
  • @RodYan - 它影响事件所采用的编译形式; 为了与其他.NET语言互操作(并实现暴露.NET事件的接口),您需要将它应用于IEvent值.这会导致生成`add_`和`remove_`方法,而不是实际暴露类型为`IEvent <_,_>`的属性,如http://msdn.microsoft.com/en-us/library中所述. /ee370437(VS.100).aspx. (4认同)
  • 这是实现接口的一个很好的例子,但没有说明如何通过数据绑定将其连接到WPF控件属性. (3认同)