2015-08-25 4 views
1

У меня есть DataGrid WPF с автогенераторами. Я смог переопределить заголовки столбцов, используя код, а также принудительно обернуть заголовки столбцов, когда я сжимаю столбцы. Когда я пытаюсь принудительно переносить перенос текста на ячейки, мои привязки перерывы ... он показывает одно и то же значение в каждом столбце.wpf DataGrid change wrapping on cells

Вот XAML, я использую для форматирования

<DataGrid.CellStyle> 
    <Style TargetType="DataGridCell"> 
     <Setter Property="ContentTemplate"> 
      <Setter.Value> 
       <DataTemplate> 
        <TextBlock TextWrapping="Wrap" Text="{Binding}"></TextBlock> 
       </DataTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</DataGrid.CellStyle> 
<DataGrid.ColumnHeaderStyle> 
    <Style TargetType="DataGridColumnHeader"> 
     <Setter Property="ContentTemplate"> 
      <Setter.Value> 
       <DataTemplate> 
        <TextBlock TextWrapping="Wrap" Text="{Binding}"></TextBlock> 
       </DataTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</DataGrid.ColumnHeaderStyle> 

Опять же, ColumnHeaderStyle работает отлично, но CellStyle не работает.

Предложения?

Update:

Заголовки столбцов устанавливаются следующим образом:

if (e.Column.Header.ToString() == "Product_Description") 
    e.Column.Header = "Product"; 

if (e.Column.Header.ToString() == "Original_Gross_Weight") 
    e.Column.Header = "Orig. Net Wt."; 

Оборачивание заголовков работает хорошо. Просто обертка содержимого не работает.

+0

Если сетка Автогенераторный из свойств, имена свойств не имеют пробелы для обертывания ... так что делает его «оберткой»? – OmegaMan

+0

См. Обновление. Оболочка заголовков работает, когда я переопределяю заголовок в коде. – pStan

+0

Ха. Просто увидел опечатку в заголовке текста тоже. oops – pStan

ответ

1

При привязке кажется, что после замены стиля данных DataGridCell полный объект для строки помещается в презентацию контента вместо текущего свойства столбца.


Оказывается перекрытие AutoGeneratingColumn так почему бы не просто включить авто генерации и определить столбцы вручную?

Вот рабочая версия, где текст обернут для данных:

<Window.Resources> 
    <model:People x:Key="People"> 
     <model:Person First="Joe" Last="Smith" Phone="303-555 5555" /> 
     <model:Person First="Mary" Last="Johnson" Phone="720-555 5555" /> 
     <model:Person First="Frank" Last="Wright" Phone="202-555 5555" /> 
    </model:People> 
</Window.Resources> 
<DataGrid AutoGenerateColumns="False" 
      ItemsSource="{StaticResource People}"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="First" Binding="{Binding First}" /> 
     <DataGridTextColumn Header="The Name" Binding="{Binding Last}" /> 
     <DataGridTextColumn Header="Phone Number" Binding="{Binding Phone}"> 
      <DataGridTextColumn.ElementStyle> 
       <Style TargetType="TextBlock"> 
        <Setter Property="TextWrapping" 
          Value="Wrap" /> 
       </Style> 
      </DataGridTextColumn.ElementStyle> 

     </DataGridTextColumn> 
    </DataGrid.Columns> 

</DataGrid> 

Результат

enter image description here

+0

Да. Возможно также. Как только я вручную набираю все содержимое заголовков в коде, я мог бы также сделать это в XAML. Это позволит мне настроить все в одном месте. Спасибо за подробный пример. – pStan

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

  • Нет связанных вопросов^_^