使用ElementName绑定不起作用

Pav*_*nin 7 wpf binding

这是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>
Run Code Online (Sandbox Code Playgroud)

绑定返回错误:System.Windows.Data错误:2:无法找到目标元素的管理FrameworkElement或FrameworkContentElement.

我错过了什么?

更新:

答案如下:http: //blogs.msdn.com/b/jaimer/archive/2008/11/22/forwarding-the-datagrid-s-datacontext-to-its-columns.aspx

这里发生了什么?Columns集合只是Datagrid中的一个属性; 此集合不在逻辑(或可视)树中,因此DataContext不会被继承,这会导致无法绑定.

更新2: 关于DataGrid警告的好文章:http://blogs.msdn.com/b/vinsibal/archive/2009/04/07/5-random-gotchas-with-the-wpf-datagrid.aspx

WPF*_*-it 1

DataGridColumnHeaderabd属性的绑定Visibility需要特殊处理...

看到这个...

绑定数据网格列可见性MVVM