WPF Привязать к DependencyProperty другого объекта? - PullRequest
0 голосов
/ 18 января 2010

Я работаю над приложением WPF, похожим на Visio. Я хотел бы иметь возможность логически сгруппировать некоторые элементы в моей диаграмме, каждый из которых является элементом UIE, и управлять определенным поведением (то есть видимостью) на уровне группы.

Моя первая попытка состояла в том, чтобы создать элемент управления, называемый Группой, который имел width & height = 0. Я хотел назначить своим элементам диаграммы определенную «Группу» через их свойство group, а затем связать определенные свойства UIElement к значению группы, как показано ниже:

<DiagramNode  
         Width="300" Height="300" 
         Visibility="{Binding RelativeSource={RelativeSource Self},Path=Group.Visibility}"
         > ... </DiagramNode >

Хотя это не приводит к ошибке привязки, она также не работает. Изменение видимости группы не влияет на видимость узлов, назначенных этой группе. Насколько я могу судить, никаких ошибок не возникает, просто не работает.

Есть идеи? Возможен ли мой подход? Если нет, у кого-нибудь есть альтернативы, которые они хотели бы предложить :). Я не большой пользователь UI, чувствую себя намного комфортнее на уровне обслуживания, поэтому я открыт для других предложений.

Ответы [ 2 ]

0 голосов
/ 19 января 2010

Возможно, проблема в моем объявлении свойства объекта Group моего класса DiagramNode?

Public Class DiagramNode
...
Private _group As Group
Public Property Group() As Group
    Get
        Return Me._group 
    End Get
    Set(ByVal value As Group)
        Me._group = value
    End Set
End Property
...
End Class
0 голосов
/ 18 января 2010

Если в трассировке приложения действительно нет ошибки привязки при запуске через отладчик, возможно, проблема в уведомлениях об изменениях. Вы должны убедиться, что свойство Visibility вашего объекта Group предоставляет уведомления об изменениях при изменении.

Обычно это делается путем реализации INotifyPropertyChanged в классе и в методе доступа set, вызывающем событие PropertyChanged (если значение действительно изменилось).

...