WPF DataGridCell保证金 [英] WPF DataGridCell Margin

查看:44
本文介绍了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>

应用于此数据网格的是以下样式:

Applied to this data grid is the following style:

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

This style adds 5 pixels of spacing to the left of the cell contents and centers the text vertically.

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

I would like to set the margin of just the first column's cells (<DataGridTemplateColumn Header="">) to 0. How can I set this in the DataTemplate. I know the Margin has to be set on DataGridCell (found by using Snoops) but do not know how to implement in the <DataGridTemplateColumn.CellTemplate>

推荐答案

层叠样式:

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

这篇关于WPF DataGridCell保证金的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆