BindingExpression路径错误:’object’上找不到属性
我一直在搜索出现在输出窗口中的这个错误。 我对WPF中的绑定很新,所以我确信有些东西我不见了。
错误的全文(每个绑定路径都有一个,都与此类似):
System.Windows.Data错误:39:BindingExpression路径错误:’object”’String’(HashCode = -842352750)’上找不到’TestItem’属性。 BindingExpression:路径= TestItem; DataItem =’String’(HashCode = -842352750); target元素是’TextBlock’(Name =”); target属性是’Text’(类型’String’)
编辑:一切似乎都应该工作,但我在输出窗口中得到这些错误。
XAML:
</ListView
代码背后:
public class MyData : INotifyPropertyChanged { private string _testitem = ""; private string _information = ""; private string _passfail = ""; public string TestItem { get { return _testitem; } set { _testitem = value; OnPropertyChanged("TestItem"); } } public string Information { get { return _information; } set { _information = value; OnPropertyChanged("Information"); } } public string PassFail { get { return _passfail; } set { _passfail = value; OnPropertyChanged("PassFail"); } } public string Text { get; set; }
您不希望在UserControl上设置DataContext。 相反,您希望将其设置在UserControl的范围内。
通常在UserControl的构造函数中执行此操作。 我通常添加这样一行:
this.RootElement.DataContext = myData;
其中RootElement是UserControl的第一个子元素(Content)(通常是Grid或StackPanel等面板)。
在你的情况下,它将是:
this.lsvwOutput.DataContext = FindResource("myDataSource")
;
并确保它在 InitializeComponent()调用之后。
这只是范围界定的问题。 您在usercontrol的根面板上设置datacontext。 这是WPF的一个非常明显的部分。
更新:正如Markus在下面指出的那样,对于listview,你想要设置一个数据数组,而不仅仅是数据点。 在构造函数中设置DataContext时要考虑到这一点。
好像你将listviews itemssource绑定到一个对象,而不是一个数组。 一切都在视觉上? 或者你什么都看不见?
编辑 :如果你写而不是:
这个:
或任何同样的集合定义