WPF DataGrid调整模板列的内容大小

时间:2011-08-25 15:51:30

标签: wpf datagrid

我有一个带有2个模板化列的DataGrid:

  • 第一个包括一个组合框,我让它的大小适合它的内容,因为这最多只有一两个字;

  • 第二个包含一个文本框,文本可能会变得有点长。

所以在这里我设置MaxWidth=somevalue以避免其宽度扩展到datagrid容器之外,我对其MaxHeight做同样的事情,并设置要包装的文本。无论如何,我希望文本框的大小调整以填充datagrid容器中的所有剩余空间:如果用户缩小或放大第二列,我希望文本框相应地缩小或放大,以便它们的宽度保持在同步。文本将换行,并在必要时显示滚动条。

网格中的两个控件都绑定到MVVM方案中的数据源。任何人都可以提示让模板文本框宽度与容器列扩展/收缩吗?这是我的示例代码:

<DataGrid ...>
  <DataGrid.Columns>
    <!-- 1 -->
    <DataGridTemplateColumn ...>
      <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
          <ComboBox .../>
        </DataTemplate>
      </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>

    <!-- 2: THIS TEXTBOX SHOULD EXPAND/CONTRACT WITH ITS CONTAINER COLUMN -->
    <DataGridTemplateColumn ...>
      <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
          <TextBox TextWrapping="Wrap"
               MinWidth="400" MaxWidth="700"
               MaxHeight="400"
               ScrollViewer.VerticalScrollBarVisibility="Auto" .../>
        </DataTemplate>
      </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
  </DataGrid.Columns>
</DataGrid>

1 个答案:

答案 0 :(得分:7)

HorizontalAlignment="Stretch"上设置TextBox并设置您的DataGrid列Width="*"