Получить прикрепленный экземпляр свойства из обратного вызова изменения свойства зависимости - PullRequest
2 голосов
/ 16 декабря 2010

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

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

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
    }
}

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

1 Ответ

2 голосов
/ 16 декабря 2010

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

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

Я не знаю точно, чего вы пытаетесь достичь, но, в качестве альтернативы, вы можете установить другие присоединенные свойства на вашем DependencyObject "dOnMyPropertyChanged.Итак, если вы хотите сохранить какое-то состояние, вы можете поместить его в другое прикрепленное свойство.

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

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

...