子DataGrid.Columns填充所有可用的宽度

时间:2013-10-02 09:00:12

标签: wpf xaml datagrid

有我的布局:

<DataGrid x:Name="BooksGrid"
          DataContext="{Binding WorkingBooksSet, Mode=TwoWay}"
          ItemsSource="{Binding}"
          RowDetailsVisibilityMode="VisibleWhenSelected"
          AutoGenerateColumns="False"
          VerticalAlignment="Top" HorizontalAlignment="Stretch"
          ColumnWidth="*">
  <DataGrid.Columns>
    <DataGridTextColumn Binding="{Binding Id}" Width="Auto" IsReadOnly="True" />
    <DataGridTextColumn Binding="{Binding Title}" />
    ...
  </DataGrid.Columns>
  <DataGrid.RowDetailsTemplate>
    <DataTemplate>
      <DataGrid ItemsSource="{Binding Publications,  Mode=TwoWay}"
                AutoGenerateColumns="False"
                VerticalAlignment="Top" HorizontalAlignment="Stretch"
                ColumnWidth="*">
        <DataGrid.Columns>
          <DataGridTextColumn Binding="{Binding Id}" Width="Auto" IsReadOnly="True" />
          <DataGridTextColumn Binding="{Binding Publisher}" />
          <DataGridTextColumn Binding="{Binding ReleaseYear}" />
          ...
        </DataGrid.Columns>
      </DataGrid>
    </DataTemplate>
  </DataGrid.RowDetailsTemplate>
</DataGrid>

这是一个window

正如您所看到的,由于某种原因,女儿DataGrid没有填满所有可用空间,而是缩小了它们。此外,禁止手动调整列的大小。

我不明白这种行为,特别是当“父”DataGrid使用相同的代码正确显示时

1 个答案:

答案 0 :(得分:1)

将* width添加到子DataGrid中的一列。

       <DataGrid.Columns>
          <DataGridTextColumn Binding="{Binding Id}" Width="Auto" IsReadOnly="True" />
          <DataGridTextColumn Binding="{Binding Publisher}" />
          <DataGridTextColumn Binding="{Binding ReleaseYear}" Width="*" />
          ...
        </DataGrid.Columns>