首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DialogResult in F#

DialogResult in F#
EN

Stack Overflow用户
提问于 2015-10-21 11:06:39
回答 1查看 175关注 0票数 1

在试图从MVVM应用程序的窗口中检索DialogResult时,我偶然发现了this previous question。在实现建议的更改之后,示例如下所示:

代码语言:javascript
复制
type DialogCloser() =

    static let DialogResultProperty =
        DependencyProperty.RegisterAttached("DialogResult", typeof<bool>, typeof<DialogCloser>, new PropertyMetadata(DialogResultChanged))

    static member GetDialogResult (a:DependencyObject) =
        a.GetValue(DialogResultProperty) :?> bool

    static member SetDialogResult (a:DependencyObject) (value:string) = 
        a.SetValue(DialogResultProperty, value)

    member this.DialogResultChanged (a:DependencyObject) (e:DependencyPropertyChangedEventArgs) =
        let window = a :?> Window
        match window with
        | null -> failwith "Not a Window"
        | _ -> window.DialogResult <- System.Nullable (e.NewValue :?> bool)

现在在声明DialogResultChanged之前使用它,当然这在F#中不计算。

我似乎找不到一个可行的解决办法,任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-21 12:59:41

我不是WPF专家,但在this related C# solution中,DialogResultsChanged方法是静态的。如果在F#中也将该方法定义为静态方法,则应该能够在声明它之前引用它(使用全名DialogCloser.DialogResultsChanged),所以如下所示应该可以做到这一点:

代码语言:javascript
复制
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)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33257724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档