2014-09-24 3 views
1

У меня есть следующие данные сетки:WPF DataGridCell Margin

<DataGrid Name="PropertiesDataGrid" 
      ItemsSource="{Binding PropertiesDataView, UpdateSourceTrigger=PropertyChanged}" 
      SelectedItem="{Binding SelectedProperty, Mode=TwoWay, 
         UpdateSourceTrigger=PropertyChanged}" 
      AutoGenerateColumns="False" 
      CanUserAddRows="False" 
      MaxHeight="200"> 
    <i:Interaction.Behaviors> 
     <helper:ScrollIntoViewBehavior/> 
    </i:Interaction.Behaviors> 

    <DataGrid.Columns> 
     <DataGridTemplateColumn Header=""> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <Button Command="Delete" 
          Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"> 
         <Image Source="../Resources/red_x.ico" 
           Height="15" /> 
        </Button> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 

     <DataGridTextColumn Header="ID" 
          Width="50" 
          Binding="{Binding ID}" 
          ElementStyle="{StaticResource CenterTextCellStyle}" 
          IsReadOnly="True" /> 

     <DataGridTextColumn Header="PropertyName" 
          Width="*" 
          Binding="{Binding PropertyName}" 
          ElementStyle="{StaticResource LeftTextCellStyle}" /> 

     <DataGridTextColumn Header="PropertyValue" 
          Width="300" 
          Binding="{Binding PropertyValue}" 
          ElementStyle="{StaticResource LeftTextCellStyle}" /> 
    </DataGrid.Columns> 

</DataGrid> 

Применительно к этой сетке данных является следующий стиль:

<Style TargetType="{x:Type DataGridCell}"> 
    <Setter Property="Height" Value="22" /> 
    <Setter Property="Margin" Value="5,0,0,0" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridCell}"> 
       <Grid Background="{TemplateBinding Background}"> 
        <ContentPresenter VerticalAlignment="Center" /> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Этот стиль добавляет 5 пикселей расстояния слева от ячейки содержимое и центрирует текст по вертикали.

Я хотел бы установить границу только в ячейках первого столбца (<DataGridTemplateColumn Header="">) до 0. Как я могу установить это в DataTemplate. Я знаю, что маржа должна быть установлена ​​на DataGridCell (найденным с помощью ищеек), но не знаю, как реализовать в <DataGridTemplateColumn.CellTemplate>

ответ

1

Каскада стиль:

<DataGridTemplateColumn Header=""> 
    <DataGridTemplateColumn.CellStyle> 
     <Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource {x:Type DataGridCell}}"> 
      <Setter Property="Margin" Value="0" /> 
     </Style> 
    </DataGridTemplateColumn.CellStyle> 
+0

идеальный! Спасибо! – BrianKE

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