【问题标题】:WPF DataGridCell MarginWPF DataGridCell 边距
【发布时间】:2014-09-24 16:35:34
【问题描述】:

我有以下数据网格:

<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 个像素的间距,并使文本垂直居中。

我想将第一列单元格 (&lt;DataGridTemplateColumn Header=""&gt;) 的边距设置为 0。如何在 DataTemplate 中进行设置。我知道必须在 DataGridCell 上设置 Margin(通过使用 Snoops 找到),但不知道如何在 &lt;DataGridTemplateColumn.CellTemplate&gt; 中实现

【问题讨论】:

    标签: c# wpf wpfdatagrid


    【解决方案1】:

    层叠样式:

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

    【讨论】:

      猜你喜欢
      • 2011-11-06
      • 2015-10-24
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 2011-04-20
      相关资源
      最近更新 更多