Привет всем знает, есть ли какие-либо встроенные классы для разрешения связанного объекта из выражения привязки и это DataItem и путь свойства?
Я пытаюсь написать поведение Blend 3 для текстовых полей, которые автоматически вызывают методы для объекта, связанного с текстовым свойством Text.
Текстовое поле привязано к свойству класса 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 и отскакивал вокруг сборок с отражателем, но ничего не имею - я не могу найти то, что обязательно должно существовать - должен быть какой-то класс, который выполняет разрешение пути для dataitem ( данных).
Кто-нибудь знает, где это может существовать? Любые предложения по альтернативным способам решения связанного объекта?
Обратите внимание: я пытаюсь получить связанный объект, который является родительским элементом связанного свойства (строка в этом случае) - я, очевидно, легко могу получить связанное значение, но это родительский элемент, который мне нужен.
Заранее благодарим за помощь! Фил