2013-08-11 8 views
23

Я программирую WPF. Мне нужен способ сделать центральное содержимое ячеек, в элементе управления DataGrid. Я также использую этот код:Выравнивание текста в DataGrid

<DataGrid x:Name="dg1" HorizontalAlignment="Left" Margin="10,10,0,0" 
    VerticalAlignment="Top" Height="360" Width="498" 
    FontFamily="2 Badr" FontSize="18" 
    AlternatingRowBackground="LightCoral" FlowDirection="RightToLeft" 
    HorizontalContentAlignment="Center" VerticalContentAlignment="Center" 
    Background="{x:Null}"/> 

Что не так?

Что я могу сделать?

Просьба ответить на ваши вопросы в XAML (Just XAML).

+4

Duplicate: http://stackoverflow.com/questions/6072093/how-to-center-the-content-of-cells-in-a-data-grid –

+0

Возможный дубликат [выравнивание текста в WPF DataGrid] (http://stackoverflow.com/questions/720732/text-alignment-in-a-wpf-datagrid) – bouvierr

ответ

62

Вы должны установить DataGridCell стиль

<DataGrid> 
     <DataGrid.Columns> 
      <DataGridTextColumn> 
       <DataGridTextColumn.ElementStyle> 
        <Style TargetType="TextBlock"> 
         <Setter Property="HorizontalAlignment" Value="Center" /> 
        </Style> 
       </DataGridTextColumn.ElementStyle> 
      </DataGridTextColumn> 
     </DataGrid.Columns> 
    </DataGrid> 
+0

(to Lai32290) Это не мой ответ. Ваш ответ добавляет столбец в мой DataSet и не устанавливает центр даже одного из содержимого моей ячейки. –

+3

Этот ответ выглядит правильно для меня - как вы ожидаете узнать, правильно ли выровнены содержимое ячейки без добавления хотя бы одного столбца? – Andrew

+0

(к Бабаку) Извините, этот код не работает, я редактировал свой код, повторите попытку – Lai32290

3

Может просто создать стиль:

<Window.Resources> 
    <Style TargetType="DataGridCell"> 
     <Setter Property="HorizontalAlignment" Value="Center" /> 
    </Style> 
</Window.Resources> 

отредактирован.

+1

Как это использовать в моем коде? поясните пожалуйста. Я новичок в xaml –

+1

Вы можете добавить стиль в ресурс своего окна – Daniel

+0

Не нравится мне, потому что тогда ваша граница/размер текстового поля, возможно, не заполняет размер ячейки полностью.Поэтому я предпочитаю ответ от Lai32290 – Nelly

1

В случае, если вы хотите отцентрировать даты в DataGridTemplateColumn

<DataGridTemplateColumn SortMemberPath="DataDiNascita" Header="Data di nascita" IsReadOnly="False"> 
       <DataGridTemplateColumn.CellEditingTemplate>       
        <DataTemplate> 
         <DatePicker SelectedDate="{Binding Path=DataDiNascita,Mode=TwoWay}" VerticalAlignment="Center" HorizontalAlignment="Left">         
         </DatePicker>       
        </DataTemplate> 
       </DataGridTemplateColumn.CellEditingTemplate> 
       <DataGridTemplateColumn.CellTemplate>       
        <DataTemplate> 
         <TextBlock Text="{Binding Path=DataDiNascita,Mode=TwoWay,StringFormat=\{0:dd/MM/yyyy\}}" VerticalAlignment="Center" HorizontalAlignment="Left">        
         </TextBlock> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
1

для влияют на все столбец

<Window.Resources> 
     <Style TargetType="DataGridColumnHeader"> 
      <Setter Property="HorizontalAlignment" Value="Stretch"/> 
      <Setter Property="HorizontalContentAlignment" Value="Center"/> 
     </Style> 
</Window.Resources> 
3

Как уже упоминалось в других ответах:

<Setter Property="HorizontalAlignment" Value="Center" /> 

HorizontalAlignment

Это повлияет на любые другие стили, такие как фон. Чтобы только центрировать текст использовать вместо этого:

<Setter Property="TextAlignment" Value="Center" /> 

textalign

5

Для тех, кому нужно форматировать только один динамический столбец DataGrid в VB.NET из стиля пользовательских XAML:

В Application.xaml :

<Application.Resources> 
    <ResourceDictionary> 
     <Style x:Key="DataGridCellCentered" TargetType="DataGridCell"> 
      <Setter Property="TextBlock.TextAlignment" Value="Center" /> 
     </Style> 
    </ResourceDictionary> 
</Application.Resources> 

В VB.NET код:

Me.MyDataGrid.Columns(5).CellStyle = TryFindResource("DataGridCellCentered") 

С уважением!

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