我的头撞在我的table上这个绑定错误。我已经检查了几个帖子的BindingExpression
路径错误,看不到任何与我的情况工作。
我有一个自定义控件,名为IncrementingTextBox
。我试图禁用它,每当用户'检查'的CheckBox
以上。
我在CheckBox
IsChecked
属性上有一个绑定,它工作正常,并且在应该触发的时候触发。它在ConfigurationModel上正确设置了UseSensorLength
属性。
但是,IncrementingTextBox
IsEnabled
属性上的绑定导致了BindingExpression
路径错误,因此根本不会更新。
作为测试,我尝试在后面的代码中启用和禁用控件,它工作得很好,但我似乎无法让绑定在上面工作。
下面是我的xaml代码片段:
...
DataContext="{Binding RelativeSource={RelativeSource Self}}"
...
...
<CheckBox Content="Use Sensor Length" Margin="30,6,0,0"
IsChecked="{Binding ConfigurationModel.UseSensorLength, Mode=TwoWay}"/>
<local:IncrementingTextBox x:Name="video_length_textbox" Margin="0,0,0,5"
IsTextEnabled="False"
IsEnabled="{Binding ConfigurationModel.DontUseSensorLength}"
ValueChanged="VideoEventValueChanged"/>
字符串
下面是我的ConfigurationModel的一个片段:
public bool DontUseSensorLength
{
get { return !UseSensorLength; }
}
public bool UseSensorLength
{
get { return _useSensorLength; }
set
{
_useSensorLength = value;
OnPropertyChanged("UseSensorLength");
OnPropertyChanged("DontUseSensorLength");
}
}
型
以下是我在运行应用程序时在输出窗口中获得的错误消息:
系统.Windows.数据错误:40:BindingExpression路径错误:在“object”“IncrementingTextBox”(Name ='video_length_textbox')上未找到“ConfigurationModel”属性。BindingExpression:Path=ConfigurationModel.DontUseSensorLength; DataItem='IncrementingTextBox'(Name='video_length_textbox');目标元素为“IncrementingTextBox”(名称=“video_length_textbox ');目标属性为“IsEnabled”(类型为“布尔”)
请记住,“UseSensorLength”属性绑定工作正常,但“DontUseSensorLength”绑定导致了上述“BindingExpression路径错误”。
9条答案
按热度按时间qyswt5oh1#
我最近写了一些其他的SO answer关于如何读取绑定错误,使它们更有意义。总而言之,在错误消息的冒号和分号处添加换行符,然后从下往上阅读。
您的错误消息是:
这可以从底部向上读取为:
IncrementingTextBox
类型的元素的IsEnabled
属性(名为video_length_textbox)。DataItem
(DataContext
)是一个名为video_length_textbox的IncrementingTextBox
类型的对象ConfigurationModel.DontUseSensorLength
IncrementingTextBox
上找不到ConfigurationModel
属性。因此,“video_length_textbox”的
DataContext
设置为自身,并且IncrementingTextBox
类没有名为ConfigurationModel
的公共属性因为我没有看到您在XAML中的任何地方为
IncrementingTextBox
设置DataContext
,所以请查看IncrementingTextBox
类的代码。最有可能的情况是您在构造函数中将DataContext设置为自身字符串
或XAML
型
rm5edbpk2#
我有同样的问题,因为我从对象中提取数据的类没有get;其属性;
这不起作用:
字符串
但这个很管用
型
yrdbyhpb3#
我也有过类似的经历,组合框上的ItemsSource绑定不起作用。
在我的例子中,这是一个小错误,但在启用跟踪消息之前很难跟踪。
我只是忘了把我的列表变成一个属性:(
字符串
也许这能帮到某人。。
bkkx9g8r4#
字符串
属性
Name
应为public
和{ get; }
utugiqy65#
我遇到了同样的问题,在我的情况下,我使用的是
bool
而不是Boolean
。当我改变它,它的工作如预期。8i9zcol26#
有几件事要检查
1.在构造函数中的InitializeComponent之前在属性中赋值
字符串
2.如果它是一个usercontrol,确保在绑定中添加userControl作为Element
型
rqdpfwrv7#
以前尝试使用XAML属性
<ItemsSource>
绑定不可访问或不存在的Enumerable示例时,也可能发生此错误当您使用正确的值更正
ItemsSource
时,XAML不会自动重新初始化项集合。因此,当我使用
ListBox
UI - list表示时,我在属性中遇到了这个问题:x1c 0d1x的数据
删除集合中的所有项目并纠正
ItemSource
值是关键。gblwokeq8#
在查看了Shahid的答案后,我注意到在我的案例中,我将
DataContext
设置为Loaded
事件中的引用,而不是在构造函数中。将其移动到构造函数解决了这个问题。zhte4eai9#
我得到了这个错误,我的情况很简单,只要将我绑定的String从private设置为public。
不小心写错了我的后台字段。