我想将画布放置在datagrid的列头中,它与colum的最左边对齐,即在列和控件之间没有边距。但是,列和控件之间总是有一些空间。我想知道我是如何摆脱图片中显示的小空间的?我也想知道为什么没有一个背景颜色(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>将页边距设置为-5并不显示所需的设计:

代码
<DataGridTemplateColumn x:Name="coPlanung">
<DataGridTemplateColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="Padding" Value="0"/>
<Setter Property="Margin" Value="-5"/>
</Style>
</DataGridTemplateColumn.HeaderStyle>
<DataGridTemplateColumn.HeaderTemplate>
...解决方案:将ContentPresenter中的边距设置为-5
<Style TargetType="ContentPresenter">
<Setter Property="Margin" Value="-5"/>发布于 2017-03-16 19:04:41
我想知道我是如何摆脱图片中显示的小空间的?
您可以将DataGridTemplateColumn的DataGridTemplateColumn设置为带有负边距的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>
...我也想知道为什么没有一个背景颜色(ItemsControl = LightBlue,Canvas = LemonChiffon)是可见的,但我想这是同样的原因。
尝试为该Height指定一个Canvas。ItemsControl的背景“隐藏”在ItemsPanel后面。但是如果您需要进一步的帮助,请提供一个回购协议:https://stackoverflow.com/help/mcve
编辑:正如您已经注意到的那样,您也可以尝试设置ContentPresenter的Margin
<Style TargetType="ContentPresenter">
<Setter Property="Margin" Value="-5"/>
</Style>发布于 2017-03-15 20:06:10
尝试设置RowHeaderWidth="0",这是一个DataGrid属性。
//编辑可能有其他干扰。下面是要对DataGrid:设计微软的WPF数据集进行样式设置的最重要属性的链接
下面是一个简短的例子
<DataGrid ItemsSource="{Binding ViewModels}" />

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

如你所见,RowHeader已经消失了。
https://stackoverflow.com/questions/42818744
复制相似问题