Свойство зависимости в F#

У меня есть приложение MVVM, написанное на F#, и одной из основных проблем, с которыми я столкнулся, было закрытие модальных диалогов. Я решил подписаться на событие RequestedClose viewmodel, но проблема DialogResult все еще осталась. Итак, я решил связать DialogResult со свойством viewmodel, но вскоре понял, что DialogResult не является объектом DependencyProperty. В конце концов я попытался реализовать этот принятый ответ. Но я не мог заставить его работать... Вот мой код:

type DialogCloser() =

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

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

member this.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)

Также я пробовал что-то подобное, но у меня это тоже не получалось. Я столкнулся с двумя типами исключений: 1) DialogResult не найден в DialogCloser 2) И, если я добавлю свойство DialogResult с помощью get и set, DialogResult не может быть применен к чему-то, что не является DialogCloser.

PS: я знаю, что должен быть другой способ решения этой проблемы, вместо создания присоединенного свойства, но для дальнейшего развития мне нужно понять, как сделать это правильно в F#.

0 ответов

Другие вопросы по тегам