Đây là XAML:Ràng buộc với ElementName không hoạt động
<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>
Binding lợi nhuận lỗi: System.Windows.Data Lỗi: 2: Không thể tìm thấy chi phối FrameworkElement hoặc FrameworkContentElement cho các phần tử mục tiêu.
Tôi bỏ lỡ điều gì?
Cập nhật:
Dưới đây là câu trả lời: http://blogs.msdn.com/b/jaimer/archive/2008/11/22/forwarding-the-datagrid-s-datacontext-to-its-columns.aspx
What is happening here? The Columns collection is just a property in the Datagrid; this collection is not in the logical (or visual) tree, therefore the DataContext is not being inherited, which leads to there being nothing to bind to.
Cập nhật 2: Tốt bài viết về hãy cẩn thận DataGrid của: http://blogs.msdn.com/b/vinsibal/archive/2009/04/07/5-random-gotchas-with-the-wpf-datagrid.aspx
Tôi không nghĩ rằng 'ElementName' làm việc * trong * cùng một nguyên tố . – ChrisF
Đây là câu trả lời: http://blogs.msdn.com/b/jaimer/archive/2008/11/22/forwarding-the-datagrid-s-datacontext-to-its-columns.aspx > Điều gì đang xảy ra ở đây? Bộ sưu tập Cột chỉ là một thuộc tính > trong Datagrid; bộ sưu tập này không phải là hợp lý (hoặc trực quan) > cây, do đó DataContext không được kế thừa, dẫn đến > không có gì để liên kết. –