2014-09-24 85 views
1

我有以下数据格:WPF DataGridCell保证金

<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 2014-09-25 13:12:15