2015-10-24 7 views
1

У меня есть WPF сетки данных добавлены в грид колонке здесь является XAMLWPF Datagrid Ширина столбца Изменение размера при максимальной

<DataGrid x:Name="grdProgramList" IsReadOnly="True" 
      Grid.Column="1" Grid.Row="1" 
      Width="{Binding Path=ActualWidth, ElementName=grid}" 
      RenderOptions.ClearTypeHint="Enabled" 
      TextOptions.TextFormattingMode="Display" 
      HeadersVisibility="All" 
      Margin="5" 
      SelectionMode="Single" 
      SelectionUnit="FullRow" 
      SelectionChanged="AzureDataGrid_Selected" 
      ItemsSource="{Binding Path=Uninstaller.ProgramCollection}" 
      SelectedItem="{Binding Uninstaller.SelectedProgramDetails, Mode=TwoWay}" 
      AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="PROGRAM NAME" 
          Binding="{Binding ProgramDetails.ProgramName}" 
          MinWidth="325" /> 
     <DataGridTextColumn Header="Publisher" 
          Binding="{Binding ProgramDetails.PublisherName}" /> 
     <DataGridTextColumn Header="Estimated Size (KB)" 
          Binding="{Binding ProgramDetails.EstimatedSize}" /> 
     <DataGridTextColumn Header="Version" 
          Binding="{Binding ProgramDetails.Version}" /> 
    </DataGrid.Columns> 
    <DataGrid.RowStyle> 
     <Style TargetType="{x:Type DataGridRow}"> 
      <EventSetter Event="MouseDoubleClick" Handler="Row_DoubleClick"/> 
      <Style.Triggers> 
       <!-- IsSelected --> 
       <MultiDataTrigger> 
        <MultiDataTrigger.Conditions> 
         <Condition Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Self}}" Value="true" /> 
        </MultiDataTrigger.Conditions> 
        <Setter Property="Background" Value="#CC119EDA" /> 
        <Setter Property="Foreground" Value="White" /> 
        <Setter Property="BorderBrush" Value="#CC119EDA" /> 
       </MultiDataTrigger> 
       <!-- IsHover --> 
       <MultiDataTrigger> 
        <MultiDataTrigger.Conditions> 
         <Condition Binding="{Binding Path=IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true" /> 
        </MultiDataTrigger.Conditions> 
        <Setter Property="Background" Value="#66119EDA" /> 
        <Setter Property="BorderBrush" Value="#66119EDA" /> 
       </MultiDataTrigger> 
      </Style.Triggers> 
     </Style> 
    </DataGrid.RowStyle> 
</DataGrid> 

, когда он повторно размеры я хочу, чтобы соответствовать все столбцы шириной сетки шириной

прямо сейчас выглядит так.

enter image description here

ответ

1

Вы должны установить Width свойство DataGridColumn. Он имеет тип DataGridLength, который позволяет устанавливать значения пропорционально.
Вы можете сделать это, установив значение number, за которым следует * (например, 2*, * по умолчанию - 1*).
Если вы хотите каждый column иметь тот же width, установите его в * на каждой из них:

<DataGrid.Columns> 
    <DataGridTextColumn Header="PROGRAM NAME" 
         Binding="{Binding ProgramDetails.ProgramName}" 
         MinWidth="325" Width="*" /> 
    <DataGridTextColumn Header="Publisher" 
         Binding="{Binding ProgramDetails.PublisherName}" Width="*" /> 
    <DataGridTextColumn Header="Estimated Size (KB)" 
         Binding="{Binding ProgramDetails.EstimatedSize}" Width="*"/> 
    <DataGridTextColumn Header="Version" 
         Binding="{Binding ProgramDetails.Version}" Width="*" /> 
</DataGrid.Columns> 

Если вы хотите только последний столбец занять оставшееся место, установите Width только на одном:

<DataGrid.Columns> 
    <DataGridTextColumn Header="PROGRAM NAME" 
         Binding="{Binding ProgramDetails.ProgramName}" 
         MinWidth="325" /> 
    <DataGridTextColumn Header="Publisher" 
         Binding="{Binding ProgramDetails.PublisherName}" /> 
    <DataGridTextColumn Header="Estimated Size (KB)" 
         Binding="{Binding ProgramDetails.EstimatedSize}" /> 
    <DataGridTextColumn Header="Version" 
         Binding="{Binding ProgramDetails.Version}" Width="*" /> 
</DataGrid.Columns> 
Смежные вопросы