Я работаю над прикрепленным свойством, где мне нужно сообщить прикрепленному свойству две вещи. Привязка и название свойства. Внутри присоединенного свойства есть логика, в которой оно использует имя класса и имя свойства для определения поведения элемента управления (не только текстового поля), например, изменения цвета текста или изменения видимости и т. Д.
Используя этот код, я могу определить имя класса и имя свойства внутри 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);
}