2016-04-07 3 views
2

Я использую библиотеку MahApps в моем приложении, стиль по умолчанию DataGrid ячейки не имеет границ:MahApps DataGridCell стиль

Data Grid Cells without borders

, но я хочу, чтобы DataGrid выглядеть следующим образом:

Data Grid Cells wit borders

Так я начал с:

<Style TargetType="{x:Type DataGridCell}"> 
    <Setter Property="Height" 
      Value="33" /> 
    <Setter Property="Background" 
      Value="Transparent" /> 
    <Setter Property="Padding" 
      Value="5,0" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridCell}"> 
       <Border x:Name="border" 
         Background="Transparent" 
         BorderBrush="Black" 
         BorderThickness="1" 
         Padding="0,10,0,10" 
         SnapsToDevicePixels="True"> 
        <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridCell}"> 
       <Grid Background="{TemplateBinding Background}"> 
        <ContentPresenter VerticalAlignment="Center" /> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

, но ничего не меняется, поэтому я предполагаю, что я пропускаю основании On = {} атрибут, но я понятия не имею, я попросил помочь MathApps команде, но не помогает ...

ответ

2

Установка GridLinesVisibility="All" на контроле DataGrid сама даст вам внутренние границы.

enter image description here

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

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

DataGridCell ключ шаблон MahApps по умолчанию MetroDataGridCell, так что вам нужно будет использовать <Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource MetroDataGridCell}">

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