【问题标题】:Daughter DataGrid.Columns fill all the available width女儿 DataGrid.Columns 填充所有可用宽度
【发布时间】:2013-10-02 09:00:11
【问题描述】:

这是我的布局:

<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 使用相同的代码正确显示时

【问题讨论】:

  • 我也遇到了同样的问题。除了您可以“手动调整列大小”的部分。这是非常奇怪的行为。
  • 编辑:here 问题的答案为我修复了它。也许我的问题不同,很难说。

标签: wpf xaml datagrid


【解决方案1】:

将 * 宽度添加到您的子 DataGrid 中的一列。

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

【讨论】:

  • 它不会填满列中所有可用的宽度。
  • 很抱歉没有帮助。我将制作一个示例并更新您。
猜你喜欢
  • 2011-03-12
  • 2016-11-24
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-16
  • 2021-09-02
  • 1970-01-01
相关资源
最近更新 更多