【发布时间】:2011-11-01 09:09:48
【问题描述】:
这是 XAML:
<DataGrid Grid.Column="0" AutoGenerateColumns="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding Path=Columns}"
x:Name="ColumnsGrid" RowHeaderWidth="0">
<DataGrid.Columns>
<DataGridTextColumn Width="*" Binding="{Binding Path=Header}"
Header="{Binding ElementName=ColumnsGrid, Path=DataContext.Count, StringFormat=Columns ({0}), diag:PresentationTraceSources.TraceLevel=High}"/>
</DataGrid.Columns>
</DataGrid>
绑定返回错误:System.Windows.Data 错误:2:找不到目标元素的管理 FrameworkElement 或 FrameworkContentElement。
我错过了什么?
更新:
这里发生了什么? Columns 集合只是一个属性 在数据网格中;此集合不在逻辑(或视觉)中 树,因此 DataContext 没有被继承,这导致 没有什么可以绑定的。
更新 2: 关于 DataGrid 警告的好文章:http://blogs.msdn.com/b/vinsibal/archive/2009/04/07/5-random-gotchas-with-the-wpf-datagrid.aspx
【问题讨论】:
-
我不认为
ElementName在同一个元素中起作用。 -
这是答案:blogs.msdn.com/b/jaimer/archive/2008/11/22/… > 这里发生了什么? Columns 集合只是 Datagrid 中的一个属性 >;此集合不在逻辑(或视觉)> 树中,因此 DataContext 没有被继承,这导致 > 没有可绑定的内容。
-
又一个有趣的错误证明了 WPF 唯一的优点就是编写教程,这项技术快把我逼疯了。