2016-01-18 4 views
1

Я бы хотел, чтобы мои колонки DataGrid занимали все оставшееся пространство, доступное для них, но были одинаково широкими. Раньше я использовал Width = "*", но по какой-то причине он не работает в этом случае. Это код для DataGrid;Ширина DataGridColumn не занимает все пространство

 <Grid Grid.Column="4" Grid.RowSpan="2" Margin="10" MaxHeight="325"> 
      <DataGrid x:Name="bnumDataGrid" Grid.RowSpan="2" Grid.Column="4" ItemsSource="{Binding CurrentBnumsCollectionView}" 
         CanUserAddRows="False" AutoGenerateColumns="False" SelectionChanged="BnumDataGridSelectionChanged"> 
       <DataGrid.Columns> 
        <DataGridTextColumn Header="Job ID" Width="*" Binding="{Binding JobID}"/> 
        <DataGridTextColumn Header="Job Description" Width="*" Binding="{Binding JobDescription}"/> 
       </DataGrid.Columns> 
      </DataGrid> 
     </Grid> 

Это приводит к тому, что колонны выглядят следующим образом;

enter image description here

Я действительно не могу понять, почему они не занимают остальную часть свободного пространства, когда я использовал подобную DataGrid даже на той же странице, что делает то, что я хочу его. Я думал, что это может быть связано с его родителем - он содержится внутри Grid, но после некоторого разговора с сеткой я тоже не смог занять место.

+0

Ваш 'DataGrid', кажется, внутри' Grid'. Является ли скриншот просто «DataGrid» или всего представления? Если это последний, то то, что еще находится в 'Grid', будет влиять на доступное пространство. – ChrisF

+0

@ChrisF Спасибо за ваш ответ. Он находится внутри 'Grid'. В «Grid» ничего больше нет. Я также обновляю свой ответ с помощью кода «Grid». Я все еще не уверен, почему «Grid» повлияет на ширину столбцов, не должна ли быть затронута ширина «DataGrid»? В моих глазах столбцы должны по-прежнему подниматься до ширины «DataGrid». – CBreeze

ответ

0

на мой взгляд, причина, по которой это происходит, - это не DataGrid, а ваш макет. Например, эта компоновка отлично работает:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="4*"/> 
    </Grid.ColumnDefinitions> 
    <DataGrid > 
     <DataGrid.Columns> 
     <DataGridTextColumn Header="Job ID" Width="*" Binding="{Binding JobID}"/> 
     <DataGridTextColumn Header="Job Description" Width="*" Binding="{Binding JobDescription}"/> 
    </DataGrid.Columns> 
</DataGrid> 

Что я вижу:

enter image description here

+0

@stepup Это немного лучше с 'Width =" Auto ", однако он все еще не идеален. Теперь есть только пустой третий столбец, который я хочу перенять на первые два. Также, когда я прокручиваю вниз, когда данные больше, столбцы «растут» - не совсем идеальны. – CBreeze

+0

Установка 'MinWidth' на DataGrid исправила это для меня! – CBreeze

Смежные вопросы