我想在数据网格的列标题中放置一个画布,它与列的最左边对齐,即列和控件之间没有边距。但是,列和控件之间总是有一些空间。我想知道如何摆脱图片中显示的黄色小空间?我也想知道,为什么没有背景颜色(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
<Style TargetType="ContentPresenter">
<Setter Property="Margin" Value="-5"/>
答案 0 :(得分:2)
我想知道如何摆脱图片中显示的黄色小空间?
您可以将HeaderStyle
的{{1}}设置为带有负边距的DataGridTemplateColumn
样式:
DataGridColumnHeader
我也很想知道,为什么背景颜色(ItemsControl = LightBlue,Canvas = LemonChiffon)都不可见,但我想这也是同样的原因。
尝试为<DataGridTemplateColumn x:Name="coPlanung">
<DataGridTemplateColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="Padding" Value="0"/>
<Setter Property="Margin" Value="-5"/>
</Style>
</DataGridTemplateColumn.HeaderStyle>
<DataGridTemplateColumn.HeaderTemplate>
...
指定Height
。 ItemsControl的背景是&#34;隐藏&#34;在Canvas
之后。但如果您需要任何进一步的帮助,请提供回购:https://stackoverflow.com/help/mcve
修改:您已经注意到,您也可以尝试设置ItemsPanel
的{{1}}:
Margin
答案 1 :(得分:0)
尝试设置RowHeaderWidth="0"
,它是DataGrid
属性。
//编辑
也许其他东西在干扰。
以下是用于设置DataGrid
:Styling Microsoft’s WPF datagrid
这是一个简短的例子
<DataGrid ItemsSource="{Binding ViewModels}" />
<DataGrid ItemsSource="{Binding ViewModels}"
RowHeaderWidth="0"/>
正如您所见,RowHeader
已消失。