2009-07-16 78 views
4

我在尝试将ListView控件绑定到DataTable,但WPF绑定系统似乎在抱怨我指定的绑定路径。绑定到当前项目(WPF)

举个例子,一个GridViewColumn定义如下:

<GridViewColumn Header="ColumnTitle" 
DisplayMemberBinding="{Binding Path=/, 
         Converter={StaticResource myConverter}}"/> 

据我了解(和MSN似乎支持我),指定Path=/应该对数据收集的当前项目的结合。

我收到(在跟踪窗口)的错误是:

System.Windows.Data Error: 39 : BindingExpression path error: '' property not found on 'current item of collection' ''OrdersRow' (HashCode=680171)'. BindingExpression:Path=/; DataItem='OrdersRow' (HashCode=680171); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')

这是给我的印象是/甚至不是一个有效的路径,和WPF期待斜线后的东西。如果是这样,我将如何绑定到当前项目?为什么我首先得到这个错误?

回答

3

我觉得困惑的是,在DataContext的GridViewColumn是顶部集合,但已经绑定到该列的项目,所以你不需要指定的路径。

您可以使用这样的路径的时间是,如果您的控件的DataContext是一个List并且您想要绑定到选定的项目。一个可能的例子是。

<Combobox DataContext={Binding ColourList} 
      DataSource={Binding} <!--Bind to the datacontext --> 
      ForeColor={Binding/} <!--Bind to the currently selected item 
            in the datacontext --> 
      /> 
+0

@Martin:是的,那正是我的困惑所在。我甚至没有尝试离开这条路,因为我自动地认为这是指整个集合。感谢您的完整解释。 – Noldorin 2009-07-16 16:02:09

7

您是否尝试省略Path参数?

<GridViewColumn Header="ColumnTitle" 
    DisplayMemberBinding="{Binding Converter={StaticResource myConverter}}"/> 
+0

@sletterlettervariables:感谢您的回复。你错过了`Path`参数确实是正确的。对不起,我必须给马丁提供额外细节的答案。 – Noldorin 2009-07-16 16:03:49