BindingOperations.在WPF中返回null
本文关键字:返回 null WPF BindingOperations | 更新日期: 2023-09-27 18:17:20
我调整了一个绑定的ViewModel,让它称为MyViewModel
从DependencyObject
继承,并切换了我的一个正常的CLR属性,让它称为Name
,它用来在setter内触发NotifyPropertyChanged()
,成为DependencyProperty
。
Name
是与TextBox
的双向绑定,并且工作正常。
但是,调用BindingOperations.GetBindingExpression(InstantiatedMyViewModel, MyViewModel.NameProperty)
总是返回null。
1 -这是因为它是不可能传递我的ViewModel (InstantiatedMyViewModel
)在作为第一个参数(而不是文本框的实例)?我假设由于它是双向绑定,InstantiatedMyViewModel
和TextBox
都应该有一些绑定知识
2 -如果可能的话,我还有什么遗漏的吗?
它工作得很好,但是当我尝试调用
你应该使用
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
只意味着值以两种方式更新。话虽如此,您应该知道,只有绑定的目标具有关于绑定表达式的信息。
。GetBindingExpression on MSDN:
返回与指定对象相关联的BindingExpression对象在指定对象上绑定目标属性。