2015-08-06 5 views
0

Так что я пытаюсь переопределить значение по умолчанию в шаблоне, определенном в ResourceDictionary. Выравнивание по умолчанию остается, но я хочу, чтобы заголовок lefthand column был выровнен справа, а правый столбец столбца был выровнен слева. Остальные данные выравниваются в порядке.Как переопределить DataGridColumnHeader, указанный в моем ResourceDictionary?

В настоящее время, это то, что у меня есть:

<ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="../Controls/CustomDataGrid.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 

     <Style x:Key="CellTextStyleR" TargetType="TextBlock"> 
      <Setter Property="TextWrapping" Value="Wrap"/> 
      <Setter Property="TextAlignment" Value="Right"/> 
      <Setter Property="Margin" Value="2,0,5,0"/> 
     </Style> 
     <Style x:Key="CellTextStyleL" TargetType="TextBlock"> 
      <Setter Property="TextWrapping" Value="Wrap"/> 
      <Setter Property="TextAlignment" Value="Left"/> 
      <Setter Property="Margin" Value="5,0,0,0"/> 
     </Style> 

     <Style x:Key="HeaderRight" TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource DataGridColumnHeaderStyle}"> 
      <Setter Property="HorizontalContentAlignment" Value="Right"/> 
      <Setter Property="Margin" Value="2,0,5,0"/> 
     </Style> 

     <Style x:Key="HeaderLeft" TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource DataGridColumnHeaderStyle}"> 
      <Setter Property="HorizontalContentAlignment" Value="Left"/> 
      <Setter Property="Margin" Value="5,0,0,0"/> 
     </Style> 

    </ResourceDictionary> 
</UserControl.Resources> 

<Grid> 


    <DataGrid Grid.Row="0" Grid.Column="1" Style="{StaticResource CustomDataGridStyle}" ItemsSource="{Binding InputDataCollection}" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Input Name" Binding="{Binding Name}" Width="50*" ElementStyle="{StaticResource CellTextStyleR}" HeaderStyle="{StaticResource HeaderRight}"/> 
      <DataGridTextColumn Header="Input State" Binding="{Binding State}" Width="50*" ElementStyle="{StaticResource CellTextStyleL}" HeaderStyle="{StaticResource HeaderLeft}"/> 
     </DataGrid.Columns> 
    </DataGrid> 

Что происходит вместо этого является то, что текст столбца остается выравнивание по левому краю.

Я также попытался определение непосредственно в сетке, но это просто убивает все форматирование ...

Есть ли способ, чтобы переопределить только выравнивание и отступы, не убивая все другое форматирование?

Благодарим за помощь!

ответ

0

Для клеток попробовать Control.HorizontalAlignment так:

<Style x:Key="CellRightAlign"> 
    <Setter Property="Control.HorizontalAlignment" 
      Value="Right" /> 
</Style> 

<Style x:Key="CellLeftAlign"> 
    <Setter Property="Control.HorizontalAlignment" 
      Value="Left" /> 
</Style> 

<DataGrid Grid.Row="0" Grid.Column="1" Style="{StaticResource CustomDataGridStyle}" ItemsSource="{Binding InputDataCollection}" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Input Name" Binding="{Binding Name}" Width="50*" ElementStyle="{StaticResource CellRightAlign}" HeaderStyle="{StaticResource HeaderRight}"/> 
      <DataGridTextColumn Header="Input State" Binding="{Binding State}" Width="50*" ElementStyle="{StaticResource CellLeftAlign}" HeaderStyle="{StaticResource HeaderLeft}"/> 
     </DataGrid.Columns> 
    </DataGrid> 

Для заголовков, возможно, потребуется удалить BasedOn. Я не могу видеть эти стили в вашем вопросе ...

+0

Сами ячейки в порядке. Это проблемы с заголовками. – sailorstar165

+0

О, заголовки столбцов? –

+0

Да. Заголовки столбцов не выравниваются так, как я хочу, с текущим кодом, и все, что я пытаюсь, просто уничтожает все форматирование в целом заголовками столбцов. Извините, если в описании проблемы не было ясно. Я отредактировал его, пытаясь сделать его более ясным. – sailorstar165

0

После долгого стука моей головы на клавиатуре, это решение, которое я закончил с:

Я изменил стили «HeaderLeft» и «HeaderRight ", чтобы они больше не были основаны на DataGridColumnHeaderStyle CustomDataGrid.xaml.

Вместо этого я скопировал то, что было в DataGridColumnHeaderStyle, в эти стили и изменил настройки, которые мне нужно было изменить там.

Не изящное решение, на которое я надеялся, но эй, если он работает ...