DialogResult in F#

后端 未结 1 1744
太阳男子
太阳男子 2021-01-24 09:44

Trying to retrieve a DialogResult from a window in a MVVM app, I stumbled on this previous question. After implementing the suggested changes, the sample looks like:

<         


        
相关标签:
1条回答
  • 2021-01-24 10:36

    I'm not a WPF expert, but in this related C# solution, the DialogResultsChanged method is static. If you define the method as static in F# too, you should be able to reference it before it is declared (using the full name DialogCloser.DialogResultsChanged), so something like the following should do the trick:

    type DialogCloser() =
    
        static let DialogResultProperty =
            DependencyProperty.RegisterAttached
                ( "DialogResult", typeof<bool>, typeof<DialogCloser>, 
                  new PropertyMetadata(DialogCloser.DialogResultChanged))
    
        static member GetDialogResult (a:DependencyObject) =
            a.GetValue(DialogResultProperty) :?> bool
    
        static member SetDialogResult (a:DependencyObject) (value:string) = 
            a.SetValue(DialogResultProperty, value)
    
        static member DialogResultChanged 
                (a:DependencyObject) (e:DependencyPropertyChangedEventArgs) =
            let window = a :?> Window
            match window with
            | null -> failwith "Not a Window"
            | _ -> window.DialogResult <- System.Nullable (e.NewValue :?> bool)
    
    0 讨论(0)
提交回复
热议问题