【问题标题】:Binding to the Current Item (WPF)绑定到当前项目 (WPF)
【发布时间】:2009-07-16 15:34:24
【问题描述】:

我正在尝试将 ListView 控件绑定到 DataTable,但 WPF 绑定系统似乎在抱怨我指定的绑定路径。

例如,GridViewColumn 定义如下:

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

据我了解(MSN 似乎支持我),指定 Path=/ 应该会绑定到数据集合的当前项。

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

System.Windows.Data 错误:39:BindingExpression 路径错误:'' 在“当前收藏项”“OrdersRow”上找不到属性 (哈希码=680171)'。绑定表达式:路径=/; DataItem='OrdersRow' (哈希码=680171);目标元素是'TextBlock'(名称='');目标 属性是“文本”(类型“字符串”)

这给我的印象是/ 甚至不是一个有效的路径,并且 WPF 在斜线之后期待一些东西。如果是这样,我还能如何绑定到当前项目?为什么我首先会收到此错误?

【问题讨论】:

    标签: wpf listview data-binding


    【解决方案1】:

    您是否尝试过省略 Path 参数?

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

    【讨论】:

    • @sixlettervariables:感谢您的回复。您确实错过了 Path 参数是正确的。抱歉,我不得不向 Martin 提供额外细节的答案。
    【解决方案2】:

    我认为令人困惑的是 GridViewColumn 的 DataContext 不是顶级集合,但已经是绑定到该列的项目,因此您不需要指定路径。

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

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

    【讨论】:

    • @Martin:是的,这正是我的困惑所在。我什至没有尝试留下路径,因为我自动认为这指的是整个系列。感谢您的完整解释。
    猜你喜欢
    • 2011-02-22
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多