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绑定到一个对象,而不是一个数组。 一切都在视觉上? 或者你什么都看不见?

编辑 :如果你写而不是:

  

这个:

    

或任何同样的集合定义