Wpf 格式化DataGrid ColumnHeader中的边距/填充

Wpf 格式化DataGrid ColumnHeader中的边距/填充,wpf,xaml,Wpf,Xaml,我想在datagrid的columnheader中放置一个画布,该画布与列的最左侧对齐,即列和控件之间没有边距。但是,列和控件之间总是有一些空间。我想知道我是如何摆脱照片中耶罗的小空间的?我还想知道,为什么所有的背景色(ItemsControl=LightBlue,Canvas=LemonChiffon)都不可见,但我想这也是同样的原因 所需的设计如下所示: 这是我的密码: <Grid DataContext="{StaticResource vmJp}"> <Da

我想在datagrid的columnheader中放置一个画布,该画布与列的最左侧对齐,即列和控件之间没有边距。但是,列和控件之间总是有一些空间。我想知道我是如何摆脱照片中耶罗的小空间的?我还想知道,为什么所有的背景色(ItemsControl=LightBlue,Canvas=LemonChiffon)都不可见,但我想这也是同样的原因

所需的设计如下所示:

这是我的密码:

<Grid DataContext="{StaticResource vmJp}">
    <DataGrid  x:Name="dgProj" AutoGenerateColumns="False" IsReadOnly="True"  CanUserAddRows="False" Margin="10" ItemsSource="{Binding Baustellen}" BorderThickness="0" HeadersVisibility="Column" Padding="0">
        <DataGrid.Columns>
         ....

            <DataGridTemplateColumn Width="1*" x:Name="coPlanung">
                <DataGridTemplateColumn.HeaderTemplate>
                    <DataTemplate>
                        <ItemsControl ItemsSource="{Binding DataContext.Monate, ElementName=dgProj}" Margin="0" VerticalAlignment="Center" Background="LightBlue">
                            <ItemsControl.ItemContainerStyle>
                                <Style TargetType="ContentPresenter">
                                    <Setter Property="Canvas.Left">
                                        <Setter.Value>
                                            <MultiBinding Converter="{StaticResource d2x}">
                                                <Binding Path="Date" Mode="OneWay" />
                                                <Binding Path="ActualWidth" ElementName="coPlanung" Mode="OneWay"/>
                                            </MultiBinding>
                                        </Setter.Value>
                                    </Setter>
                                </Style>
                            </ItemsControl.ItemContainerStyle>
                            <ItemsControl.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <Canvas Width="{Binding ActualWidth, ElementName=coPlanung}" Margin="0" Background="LemonChiffon"/>
                                </ItemsPanelTemplate>
                            </ItemsControl.ItemsPanel>
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <!--Monthnames-->
                                    <TextBox Text="{Binding Path=Date, StringFormat={}{0:MMM-yyyy}, Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Center" Background="Transparent" Margin="0">
                                        <TextBox.Width>
                                            <MultiBinding Converter="{StaticResource d2b}">
                                                <Binding Path="Date" Mode="OneWay" />
                                                <Binding Path="ActualWidth" ElementName="coPlanung" Mode="OneWay"/>
                                            </MultiBinding>
                                        </TextBox.Width>
                                    </TextBox>
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ItemsControl>
                    </DataTemplate>
                </DataGridTemplateColumn.HeaderTemplate>

尝试设置
RowHeaderWidth=“0”
,它是一个
DataGrid
属性

//编辑 也许是别的什么干扰了。 以下是设置数据网格样式的最重要属性的链接:

下面是一个简短的例子

<DataGrid ItemsSource="{Binding ViewModels}" />


如您所见,
行标题
已消失

我想知道我是如何摆脱照片中耶罗的小空间的

您可以将
DataGridTemplateColumn
HeaderStyle
设置为带有负边距的
DataGridColumnHeader
样式:

<DataGridTemplateColumn x:Name="coPlanung">
    <DataGridTemplateColumn.HeaderStyle>
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="Padding" Value="0"/>
            <Setter Property="Margin" Value="-5"/>
        </Style>
    </DataGridTemplateColumn.HeaderStyle>
    <DataGridTemplateColumn.HeaderTemplate>
    ...

我认为我的照片没有很好地显示出这个问题。问题不在于如何去掉rowheader,而在于如何设置columnheader的格式,因此控件现在还有空间。在你的例子中,浅灰色线和Zwei之间应该没有空格。哈哈,好的。我以为你只是想摆脱,如果黄色区域和那看起来像一个划船头对我来说;)也许你可以发布一张展示所需设计的图片。我更新了这个问题,因为它不起作用,但你为我指出了正确的方向-非常感谢。如果你更新你的答案,我会接受它作为答案。我更新了答案。你使用的是哪个版本的Windows?我使用的是Windows 10。因为所有的客户都在win 10上运行,所以我没有把重点放在这一点上。应该考虑一下吗?可能不会。我只是想知道为什么设置细胞的边缘对我有效。但我没有尝试使用与您完全相同的标记,这可能解释了这一点。
<DataGrid ItemsSource="{Binding ViewModels}" />
<DataGrid ItemsSource="{Binding ViewModels}"
          RowHeaderWidth="0"/>
<DataGridTemplateColumn x:Name="coPlanung">
    <DataGridTemplateColumn.HeaderStyle>
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="Padding" Value="0"/>
            <Setter Property="Margin" Value="-5"/>
        </Style>
    </DataGridTemplateColumn.HeaderStyle>
    <DataGridTemplateColumn.HeaderTemplate>
    ...
<Style TargetType="ContentPresenter">                                        
    <Setter Property="Margin" Value="-5"/>
</Style>