wpf 在代码中获取绑定的结果

0tdrvxhp  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(133)

我可能找错了方向,但是:
有没有办法通过代码得到绑定的结果值?
可能是很明显的东西,但我就是找不到。

uqdfh47h

uqdfh47h1#

您只需要调用绑定的ProvideValue方法。困难的部分是你需要传递一个有效的IServiceProvider给方法... * 编辑:事实上,那不是真的... ProvideValue返回BindingExpression,而不是绑定属性的值。*
您可以使用以下技巧:

  1. class DummyDO : DependencyObject
  2. {
  3. public object Value
  4. {
  5. get { return (object)GetValue(ValueProperty); }
  6. set { SetValue(ValueProperty, value); }
  7. }
  8. public static readonly DependencyProperty ValueProperty =
  9. DependencyProperty.Register("Value", typeof(object), typeof(DummyDO), new UIPropertyMetadata(null));
  10. }
  11. public object EvalBinding(Binding b)
  12. {
  13. DummyDO d = new DummyDO();
  14. BindingOperations.SetBinding(d, DummyDO.ValueProperty, b);
  15. return d.Value;
  16. }
  17. ...
  18. Binding b = new Binding("Foo.Bar.Baz") { Source = dataContext };
  19. object value = EvalBinding(b);

不是很优雅,但是很有效...

展开查看全部
qybjjes1

qybjjes12#

要获取绑定到项目的数据,在事件发生后,可以引用DataContext属性。这将返回绑定的数据项。
例如,我想在TextChanged事件中获取TextBox的文本。

  1. private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
  2. {
  3. var box = sender as TextBox;
  4. var value = box.DataContext as ObjectName; // ObjectName being the type of object being bound in the list
  5. ...
  6. }

这将获得绑定到列表的值。对于点击事件等很实用。

相关问题