Я думаю, что проблема в том, что static member
в F # не соответствует общедоступному полю, как вы, возможно, ожидали, а свойству с get
членом. Это означает, что каждый раз, когда вы получаете доступ к this.ItemsProperty
, вы фактически создаете новое свойство зависимости.
Вы можете создать статическое поле следующим образом:
type Control =
// private static field
static let itemsProperty : DependencyProperty =
DependencyProperty.Register
("Items", typeof<MyMenuItemCollection>, typeof<MyMenu>, null);
// public static property with getter
static member ItemsProperty = itemsProperty
// You can use both private 'itemsProperty' field or public property here
member this.Items
with get () : MyMenuItemCollection =
this.GetValue(itemsProperty) :?> MyMenuItemCollection
and set (value: MyMenuItemCollection) =
this.SetValue(itemsProperty, value)