通过RowDetailsTemplate达到显示子表的功能,
现在希望子表的列宽与主表一致,通过以下发式发现行不通, 不知道有没有好的办法。
                <DataGrid ItemsSource="{Binding Customers}" AutoGenerateColumns="False" >
                    <DataGrid.Columns>
                        <DataGridTextColumn x:Name="AAA" Header="First Name" Binding="{Binding FirstName}" />
                    </DataGrid.Columns>
                    <DataGrid.RowDetailsTemplate>
                        <DataTemplate>
                            <DataGrid ItemsSource="{Binding Customers}" AutoGenerateColumns="False"  >
                                <DataGrid.Columns>
                                    <DataGridTextColumn Header="Name" Binding="{Binding FirstName}" IsReadOnly="True" Width="{Binding ElementName=AAA, Path=ActualWidth}" />                                    
                                </DataGrid.Columns>
                            </DataGrid>
                        </DataTemplate>
                    </DataGrid.RowDetailsTemplate>
                </DataGrid>

解决方案 »

  1.   

    Width="{Bingding Source=AAA,Path=Width}"我以前用过一个控件的宽度设为另一个控件的宽度,是这么做的,没弄过DataGrid的列宽。。
      

  2.   

    关键是Source AAA 找不到
      

  3.   

    DataGridColumn是不会出现在视觉树上的,所以你 ElementName=AAA, Path=ActualWidth根本是找不到的。说实话,这个问题本人没有什么好的解决办法。因为列宽进行绑定是没用的,不在视觉树上。
      

  4.   

    没有发现 DataGridColumn列宽度修改事件, 在线等答案。。