BindingOperations.在WPF中返回null

本文关键字:返回 null WPF BindingOperations | 更新日期: 2023-09-27 18:17:20

我调整了一个绑定的ViewModel,让它称为MyViewModelDependencyObject继承,并切换了我的一个正常的CLR属性,让它称为Name,它用来在setter内触发NotifyPropertyChanged(),成为DependencyProperty

Name是与TextBox的双向绑定,并且工作正常。

但是,调用BindingOperations.GetBindingExpression(InstantiatedMyViewModel, MyViewModel.NameProperty)总是返回null。

1 -这是因为它是不可能传递我的ViewModel (InstantiatedMyViewModel)在作为第一个参数(而不是文本框的实例)?我假设由于它是双向绑定,InstantiatedMyViewModelTextBox都应该有一些绑定知识

2 -如果可能的话,我还有什么遗漏的吗?

它工作得很好,但是当我尝试调用

BindingOperations.在WPF中返回null

你应该使用

  var name = InstantiatedMyViewModel.GetValue(MyViewModel.NameProperty)

BindingOperations.GetBindingExpression用于绑定到其他对象的控件。例如

  <TextBox x:Name="textBox1" Text="{Binding Name}" />
然后

  var bindingExpression = BindingOperations.GetBindingExpression(
     textBox1, TextBox.TextProperty);
  // "Name"
  var path = bindingExpression.ParentBinding.Path; 

我假设您在TextBox上用XAML定义了绑定—在这种情况下,文本框是绑定的目标,而视图模型是源—总是有一个目标和一个源,并且BindingMode.TwoWay只意味着值以两种方式更新。话虽如此,您应该知道,只有绑定的目标具有关于绑定表达式的信息。

从BindingOperations

。GetBindingExpression on MSDN:

返回与指定对象相关联的BindingExpression对象在指定对象上绑定目标属性。