Свойство источника привязки свойства WPF не доступно

Я пытаюсь связать свойство зависимости в элементе управления, который наследуется от MenuItem, со свойством зависимости моего окна. Я поставил точки останова в get и множествах обоих свойств, и я никогда не вижу свойства get вызываемого окна. Свойство окна является источником, а свойство элемента управления является целью.

Свойство элемента управления выглядит следующим образом:

Public Shared StorageProperty As DependencyProperty = 
                                 DependencyProperty.Register("Storage",
                                                             GetType(IStorage),
                                                             GetType(MRUFileList),
                                                             New PropertyMetadata(Nothing))

Public Property Storage As IStorage
    Get
        Return DirectCast(GetValue(StorageProperty), IStorage)
    End Get
    Set(value As IStorage)
        SetValue(StorageProperty, value)
    End Set
End Property

И свойство окна:

Public Shared ReadOnly MRUStorageProperty As DependencyProperty =
                                             DependencyProperty.Register("MRUStorage",
                                                                         GetType(MRU.IStorage),
                                                                         GetType(GrammarEditor),
                                                                         New PropertyMetadata(Nothing))

Public Property MRUStorage As MRU.IStorage
    Get
        Return DirectCast(GetValue(MRUStorageProperty), MRU.IStorage)
    End Get
    Set(value As MRU.IStorage)
        SetValue(MRUStorageProperty, value)
    End Set
End Property

И наконец, XAML, определяющий привязку:

<mru:MRUFileList Name="mnuRecent" 
                 Header="Open _Recent" 
                 Storage="{Binding MRUStorage, 
                           Mode=TwoWay, 
                           UpdateSourceTrigger=PropertyChanged}" />

Ранее я пытался установить для RelativeSource значение Self, а также FindAncestor с AncestoryType, установленным в Window.

1 ответ

Решение

При привязке свойства зависимостей get/set никогда не будет вызываться, поскольку привязка разрешается с использованием инфраструктуры свойств зависимости. Как вы можете видеть, все, что делает ваше свойство, это позволяет вам легко получить доступ к значению этого свойства зависимости, вызвав

GetValue(StorageProperty)

Вместо того, чтобы использовать ваше свойство, механизм привязки просто вызывает это напрямую

Изменить: есть ли в вашем окне MRUStorage в качестве свойства? Это понадобится вам, чтобы иметь возможность использовать его в качестве обязательного пути

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