2014-04-29 2 views
1

DataGridMahApps 스타일을 사용하고 있습니다. 나는 중심에 있어야하는 기둥이 있습니다. 스타일을 만들 때마다 해당 열과 연결된 셀이 선택되었을 때 다르게 보입니다.WPF DataGrid 센터링 열이 MahApps 스타일을 엉망으로 만듭니다.

다음은 내 DataGrid XAML입니다.

<Style x:Key="DataGridColumnHeaderDataGridCellStyle" 
     TargetType="{x:Type DataGridCell}" 
     BasedOn="{StaticResource {x:Type DataGridCell}}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridCell}"> 
       <Grid Background="{TemplateBinding Background}"> 
        <ContentPresenter HorizontalAlignment="Center" /> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

그리고 내 셀 그 스타일을 참조 :

<DataGrid ItemsSource="{Binding Path=DiariesForSelectedProject}" 
      AutoGenerateColumns="False" 
      HorizontalContentAlignment="Center" 
      HorizontalAlignment="Stretch"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Number" 
          Binding="{Binding Path=Number}" 
          Width="Auto" 
          IsReadOnly="True" > 
      <DataGridTextColumn.CellStyle> 
       <Style> 
        <Setter Property="FrameworkElement.HorizontalAlignment" 
          Value="Center" /> 
       </Style> 
      </DataGridTextColumn.CellStyle> 
     </DataGridTextColumn> 
     <DataGridTextColumn Header="Date" 
          Binding="{Binding Path=Date, StringFormat=d}" 
          Width="Auto" 
          IsReadOnly="True"/> 
     <DataGridTextColumn Header="Inspector" 
          Binding="{Binding Path=Inspector}" 
          Width="Auto" 
          IsReadOnly="True" /> 
     <DataGridTextColumn Header="Diary Status" 
          Binding="{Binding Path=Status}" 
          Width="Auto" 
          IsReadOnly="True" /> 
    </DataGrid.Columns> 

    <DataGrid.ItemContainerStyle> 
     <Style TargetType="DataGridRow"> 
      <Style.Triggers> 
       <MultiDataTrigger> 
        <MultiDataTrigger.Conditions> 
         <Condition Binding="{Binding Path=IsOwner}" 
            Value="True" /> 
         <Condition Binding="{Binding Path=Status}" 
            Value="Supervisor Returned" /> 
        </MultiDataTrigger.Conditions> 
        <Setter Property="Foreground" 
          Value="White" /> 
        <Setter Property="Background" 
          Value="Red" /> 
       </MultiDataTrigger> 

       <MultiDataTrigger> 
        <MultiDataTrigger.Conditions> 
         <Condition Binding="{Binding Path=IsOwner}" 
            Value="True" /> 
         <Condition Binding="{Binding Path=Status}" 
            Value="Office Returned" /> 
        </MultiDataTrigger.Conditions> 
        <Setter Property="Foreground" 
          Value="White" /> 
        <Setter Property="Background" 
          Value="Red" /> 
       </MultiDataTrigger> 
      </Style.Triggers> 
     </Style> 
    </DataGrid.ItemContainerStyle> 
</DataGrid> 

대신 제가 위에서 가지고있는 CellStyle를 사용하여, 나는 또한 다음과 같은 노력했다. 그러나 최종 결과는 두 번 동일합니다. 열은 가운데에 배치되지만 행을 선택하면 DataGrid 셀의 모양이 달라집니다.

enter image description here

사람이 제대로 엉망 MahApps 스타일을 열 중심이 아닌 방법으로 나를 도와 드릴까요?

감사합니다.

답변

1

XAMLSpy을 사용하여이 문제를 해결했으며 행을 살펴 보았습니다. 스타일이 적용된 각 셀에서 배경색이 다시 설정되는 것으로 나타났습니다. 이 문제를 해결하기 위해 방금 컨텐트 발표자를 격자에 배치하고 배경색을 투명하게 설정했습니다.

<Style x:Key="DataGridColumnHeaderDataGridCellStyle" 
     TargetType="{x:Type DataGridCell}" 
     BasedOn="{StaticResource {x:Type DataGridCell}}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridCell}"> 
       <Grid Background="Transparent"> 
        <ContentPresenter HorizontalAlignment="Center" /> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
관련 문제