2010-12-16 1 views
2

Есть ли какой-либо способ получения экземпляра прикрепленного объекта из отзыва обратного вызова с изменением свойств, сидящего на прикрепленном типе свойства?Приобретенный экземпляр свойства из обратного вызова изменения зависимостей

Другими словами, если у вас есть:

public class MyAttachedPropertyClass 
{ 
     public static readonly DependencyProperty MyProperty = DependencyProperty.RegisterAttached(
     "My", typeof(int), typeof(MyAttachedPropertyClass), new FrameworkPropertyMetadata(0, OnMyPropertyChanged)); 

private static void OnMyPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
    { 
     //TODO: access instance of MyAttachedPropertyClass 
    } 
} 

Мне нужно получить доступ к экземпляру из MyAttachedPropertyClass так что я могу установить значение другого имущества, сидящего на типе.

+0

Не уверен, что я понимаю, что вы хотите сделать. Можете ли вы подробнее рассказать? – 2010-12-16 14:16:08

ответ

2

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

По сути, вам понадобится создать экземпляр экземпляра в какой-то момент, а затем сделать его доступным в вашем OnMyPropertyChanged, вероятно, через какое-то статическое состояние.

Я не знаю точно, чего вы пытаетесь достичь, но в качестве альтернативы вы можете установить другие прикрепленные свойства на своем DependencyObject «d» в OnMyPropertyChanged. Итак, если есть какое-то состояние, которое вы хотите сохранить, вы можете положить его в привязанную собственность.

В этот момент мне кажется, что MyAttachedPropertyClass может быть элементом управления, который использует прикрепленные свойства, такие как Grid или DockPanel. В этом случае MyAttachedPropertyClass может быть родителем DependencyObject «d», и вы можете получить к нему доступ, используя класс VisualTreeHelper.

На данный момент я просто снимаю в темноте ответы. Если у вас есть более подробная информация о том, что вы пытаетесь сделать, я могу помочь вам в дальнейшем.

Смежные вопросы