Как получить привязку для DependencyObject - PullRequest
0 голосов
/ 05 сентября 2018

Я работаю над прикрепленным свойством, где мне нужно сообщить прикрепленному свойству две вещи. Привязка и название свойства. Внутри присоединенного свойства есть логика, в которой оно использует имя класса и имя свойства для определения поведения элемента управления (не только текстового поля), например, изменения цвета текста или изменения видимости и т. Д.

Используя этот код, я могу определить имя класса и имя свойства внутри MyAttached. Но проблема в том, что если значение SomeText равно нулю, OnBindingChanged не запускается.

<Textbox Text="{Binding SomeText}" 
         MyAttached.Binding="{Binding SomeText}" />

Итак, я привел что-то вроде этого, этот работает для меня:

<Textbox Text="{Binding SomeText}" 
         MyAttached.Path="SomeText"
         MyAttached.Binding="{Binding}" />

Большую часть времени MyAttached.Binding будет = "{Binding}". Есть ли способ, которым я могу устранить эту линию. Или, может быть, определить привязку в коде MyAttached?

Я стремлюсь к чему-то вроде этого:

<Textbox Text="{Binding SomeText}" 
         MyAttached.Path="SomeText" />

И определить источник привязки здесь:

private static async void OnPathChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
   string propertyName = e.NewValue.ToString();

   // Is it possible to get this without using another attached property?
   // Can I get it from the dependency object? 
   // object bindingSource = ???; 

   ActivateBehavior(bindingSource, propertyName); 
}
...