2014-02-18 3 views
1

У меня проблема с использованием DataGrid. Столбцы загружаются из самой широкой видимой ячейки. Но если пользователь прокручивает вниз и появляется более широкая ячейка, то размер столбца изменяется.WPF DataGrid set Ширина столбца от самой высокой ячейки

Пользователю это не нравится, затем я ищу, чтобы отменить это поведение. Простое решение - установить ширину столбца с самой широкой шириной ячейки. Но мне трудно понять это.

Если у вас есть другое решение проблемы с моей проблемой, также будет хорошо.

<Window x:Class="Win" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     SizeToContent="Width">   
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="auto"/> 
      <RowDefinition/> 
     </Grid.RowDefinitions> 
     <GroupBox Grid.Row="0" Header="Seach"> 
      <TextBox TextChanged="TextBoxFilter_TextChanged"/> 
     </GroupBox> 
     <DataGrid Grid.Row="1" Name="DataGridOperations" AutoGenerateColumns="False" ColumnWidth="auto" CanUserAddRows="False" CanUserDeleteRows="False" AlternatingRowBackground="AntiqueWhite"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Date" IsReadOnly="True" Binding="{Binding Date,Mode=OneTime, StringFormat={}{0:dd/MM/yyyy hh:mm:ss}}"/> 
       <DataGridTextColumn Header="Type" IsReadOnly="True" Binding="{Binding Type,Mode=OneTime}"/> 
       <DataGridTextColumn Header="Etat" IsReadOnly="True" Binding="{Binding Status,Mode=OneTime}"/> 
       <DataGridTextColumn Header="Name" IsReadOnly="True" Binding="{Binding Name,Mode=OneTime}"/> 
       <DataGridTextColumn Header="Code" Binding="{Binding CodeProduct,Mode=OneTime}"/> 
       <DataGridTextColumn Header="Version" IsReadOnly="True" Binding="{Binding VersionIndus,Mode=OneTime}"/> 
      </DataGrid.Columns> 
     </DataGrid>  
    </Grid> 
</Window> 

Игнорировать модуль фильтра. Он отключен при загрузке. Я использую C# 4.0 .NET.

ответ

0

Что делать, если просто установить ширину столбца до *, в XAML:

Width="*" 

и создать CellTemplate, что сеточки TextWrapping (возможно, используя texblock для этого) Таким образом, ширина колонки остается постоянной Приветствия, G

+0

С Ширина = "*" и двойной экран, Окно распространяется по всей поверхности. Я не хочу обертывать текст. В настоящее время после загрузки DataGrid я устанавливаю ширину столбца с помощью AcualWidth, но некоторые значения обрезаются. – Orwel

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