Привет, кто-нибудь знает, есть ли какие-нибудь встроенные классы для разрешения связанного объекта из выражения привязки, его DataItem и пути к свойствам?
Я пытаюсь написать поведение Blend 3 для текстовых полей, которое автоматически вызывает методына объекте, связанном с текстовым свойством Textbox.
Текстовое поле связано со свойством класса viewmodel.То, что я хочу сделать, это разрешить класс viewmodel из выражения привязки и затем выполнить вызовы этого.
Сначала я получаю выражение привязки из объекта, связанного с поведением, следующим образом:
private BindingExpression GetTextBinding()
{
return this.AssociatedObject.GetBindingExpression(TextBox.TextProperty);
}
Сделав это, если мы посмотрим на выражение привязки, то увидим, что оно имеет ссылку на контекст данных через свойство DataItem выражения привязки.
Кроме того, у нас есть относительный путь свойства, которое связанов родительской привязке выражения привязки.
Итак, мы можем получить эту информацию:
var bindingExpression = GetTextBinding();
object dataContextItem = bindingExpression.DataItem;
PropertyPath relativePropertyPath = bindingExpression.ParentBinding.Path;
Теперь этот путь свойства потенциально может быть глубоко вложенным и сложным путем, который я бы очень хотелхотелось бы избежать (пере?) реализации разрешения.Я искал документацию по .NET и отскочил вокруг сборок с отражателем, но все безрезультатно - я не могу найти то, что обязательно должно существовать - должен быть какой-то класс, который выполняет разрешение пути для элемента данных (контекст данных).
Кто-нибудь знает, где это может существовать?Любые предложения по альтернативным способам разрешения связанного объекта?
Обратите внимание, я пытаюсь получить связанный объект, который является родительским связанного свойства (в данном случае это строка)- Очевидно, я легко могу получить привязанное значение, но мне нужен родитель.
Заранее спасибо за любую помощь!Фил