我想在datagrid的columnheader中放置一个画布,它与列的最左边对齐,即列和控件之间没有边距。但是,列和控件之间总是有一些空间。我想知道如何摆脱图片中黄色显示的小空间?我也想知道,为什么没有一个背景颜色(ItemsControl = LightBlue,Canvas = LemonChiffon)是可见的,但我想这是同样的原因。
x1c 0d1x的数据
所需的设计看起来像这样:
的
下面是我的代码:
<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>
...
型
2条答案
按热度按时间tcomlyy61#
我想知道我如何摆脱小空间显示黄色的图片?
您可以将
DataGridTemplateColumn
的HeaderStyle
设置为具有负边距的DataGridColumnHeader
样式:字符串
我也想知道,为什么没有一个背景颜色(ItemsControl = LightBlue,Canvas = LemonChiffon)是可见的,但我想这是同样的原因。
尝试为
Canvas
指定Height
。ItemsControl的背景“隐藏”在ItemsPanel
后面。**编辑:**正如你已经注意到的,你也可以尝试设置
ContentPresenter
的Margin
:型
vsaztqbk2#
尝试设置
RowHeaderWidth="0"
,这是一个DataGrid
属性。//edit可能有其他的东西在干扰。这里是一个最重要的属性的链接来样式化你的
DataGrid
:Styling Microsoft’s WPF datagrid这里有一个简短的例子
字符串
x1c 0d1x的数据
型
的
正如你所看到的,
RowHeader
已经消失了。