2016-02-01 5 views
0

У меня есть datagrid в WPF, который автоматически генерирует столбцы. некоторые столбцы имеют ширину больше, чем весь экран, я хочу проверить ширину и, если она больше 500, тогда установите ее на 500, но если она меньше 500, сохраните текущую ширину.установить максимальную ширину отображения для столбца в WPF datagrid

 <DataGrid x:Name="dgLM" Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="2" ItemsSource="{Binding}" HorizontalAlignment="Stretch" 
       Margin="5" VerticalAlignment="Stretch" IsReadOnly="True" CanUserAddRows="False" AutoGenerateColumns="True" CanUserDeleteRows="False" 
       LoadingRow="dg_LoadingRow" AlternatingRowBackground="#FFDAD5D5" 
       AutoGeneratingColumn="dgMain_AutoGeneratingColumn" > 
      <!--<DataGrid.Resources> 
      <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="DarkGray"/> 
     </DataGrid.Resources>--> 
      <DataGrid.Resources> 
       <Style TargetType="{x:Type DataGridCell}"> 
        <Style.Triggers> 
         <Trigger Property="DataGridCell.IsSelected" Value="True"> 
          <Setter Property="Background" Value="DarkGray" /> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </DataGrid.Resources> 
     </DataGrid> 

и код:

private void dgMain_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) 
    { 
     if (e.PropertyType == typeof(System.DateTime)) 
      (e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy HH:mm:ss"; 

     //e.Column.Width = new DataGridLength(1, DataGridLengthUnitType.Star); 
     if (e.Column.Width > 500) 
     { 
      e.Column.Width = 500; 
     } 

    } 

признателен за любую помощь!

+0

, но в чем проблема? – Ilan

+0

Вы не можете использовать: e.Column.Width> 500 как тип для 'Width' - DataGridLength – user3951476

ответ

0

При работе с шириной столбца в AutoGeneratingColumn вы должны использовать DataGridLength.

Вы также можете изменить e.Column.MaxWidth, который является двойным.

+0

спасибо за ответ, проблема в том, что вы не можете сравнить: e.Column.Width> 500 – user3951476

+0

Да, как я уже говорил, вам нужно иметь дело с DataGridLength. Мой пример был неправильным в части сравнения. – Giangregorio

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