Получить результат привязки в коде

Я, вероятно, ищу это неправильно, но:

Есть ли способ получить результирующее значение привязки через код?

Возможно, что-то очевидно очевидное, но я просто не могу найти это.

Ответы на вопрос(1)

Решение Вопроса

Вам просто нужно позвонитьProvideValue метод связывания. Сложность в том, что вам нужно пройти действительныйIServiceProvider к методу ... РЕДАКТИРОВАТЬ: на самом деле это не так ...ProvideValue возвращаетBindingExpression, а не значение связанного свойства.

Вы можете использовать следующий трюк:

class DummyDO : DependencyObject
{
    public object Value
    {
        get { return (object)GetValue(ValueProperty); }
        set { SetValue(ValueProperty, value); }
    }

    public static readonly DependencyProperty ValueProperty =
        DependencyProperty.Register("Value", typeof(object), typeof(DummyDO), new UIPropertyMetadata(null));

}

public object EvalBinding(Binding b)
{
    DummyDO d = new DummyDO();
    BindingOperations.SetBinding(d, DummyDO.ValueProperty, b);
    return d.Value;
}

...

Binding b = new Binding("Foo.Bar.Baz") { Source = dataContext };
object value = EvalBinding(b);

Не очень элегантно, но работает ...

 Thomas Levesque19 дек. 2014 г., 18:11
@ tobriand, я не уверен, что понимаю ... Каков твой вариант использования?
 Rachel19 дек. 2014 г., 18:22
stackoverflow.com/q/27568421/302677 для ссылки на вопрос @ tobriand :)
 tobriand19 дек. 2014 г., 17:53
Я пытаюсь сделать что-то подобное, но сталкиваюсь с проблемами, я думаю, потому что мне нужно использовать RelativeSource. Любая идея, как избежать оценки родственного источника в отношении DummyDO вместо цели, неявной в контексте привязки?
 Inferis12 окт. 2010 г., 10:00
Ах да, это было так. Благодарю.
 tobriand19 дек. 2014 г., 18:19
По сути, у меня есть прикрепленное поведение, которое я хотел бы иметь возможность назначать для выполнения произвольно назначенных свойств, поэтому я передаю объект Binding, а не его результат. Идея в том, что я должен быть в состоянии оценить это позже, как только мое поведение активируется. Так как я пытаюсь настроить свойство элементов управления WPF, я в конечном итоге использую RelativeSource и т. Д., Что приводит к сообщениям в соответствии со строкой «Фон свойства не найден для типа DummyDO». То есть он не использует исходное местоположение привязки как точку отсчета - он использует DummyDO ...

Ваш ответ на вопрос