Возможно, я искал это неправильно, но:Получить результат привязки в коде
Есть ли способ получить результирующее значение привязки с помощью кода?
Возможно, что-то очевидное, но я просто не могу его найти.
Возможно, я искал это неправильно, но:Получить результат привязки в коде
Есть ли способ получить результирующее значение привязки с помощью кода?
Возможно, что-то очевидное, но я просто не могу его найти.
Вам просто нужно позвонить методу привязки
EDIT: на самом деле это не так ... 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);
Не очень элегантно, но он работает ...
Ах да, это был он. Благодарю. – Inferis
Я пытаюсь сделать что-то подобное, но сталкиваясь с проблемами, я думаю, потому что мне нужно использовать RelativeSource. Любая идея, как избежать получения родственниками источника в отношении DummyDO вместо цели, подразумеваемой в контексте привязки? – tobriand
@tobriand, я не уверен, что понимаю ... Каков ваш прецедент? –