我想放置一個畫布在數據網格的列標題中,該數據網格與列的最左側對齊,即列和控件之間沒有空白。但是,列和控件之間總是有一些空間。我想知道如何擺脫圖片中顯示的黃色小空間?我也想知道,爲什麼沒有背景顏色(ItemsControl = LightBlue,Canvas = LemonChiffon)是可見的,但我想這是相同的原因。格式DataGrid中的邊距/填充ColumnHeader
了預期的設計看起來是這樣的:
這裏是我的代碼:
<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"/>
我更新了這個問題,因爲它不起作用,但是你指出了我正確的方向 - 非常感謝。如果你更新了答案,我會接受它作爲答案。 –
我更新了答案。你在哪個版本的Windows上? – mm8
我使用的是Windows 10.由於所有的客戶端都運行在贏10上,所以我沒有專注於此。這應該以某種方式考慮? –