2017-03-15 133 views
0

我想放置一個畫布在數據網格的列標題中,該數據網格與列的最左側對齊,即列和控件之間沒有空白。但是,列和控件之間總是有一些空間。我想知道如何擺脫圖片中顯示的黃色小空間?我也想知道,爲什麼沒有背景顏色(ItemsControl = LightBlue,Canvas = LemonChiffon)是可見的,但我想這是相同的原因。格式DataGrid中的邊距/填充ColumnHeader

enter image description here

了預期的設計看起來是這樣的:

enter image description here

這裏是我的代碼:

<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不顯示了預期的設計:

enter image description here

代碼

<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"/> 

回答

1

我想知道如何擺脫圖片中顯示的黃色小空間?

您可以設置DataGridTemplateColumnHeaderStyleDataGridColumnHeader風格切緣陰性:

<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,帆布=粉黃)是可見的,但我想這是相同的原因。

嘗試指定Height作爲Canvas。 ItemsControl的背景「隱藏」在ItemsPanel後面。但請提供回購,如果你的東東任何進一步的幫助:https://stackoverflow.com/help/mcve

編輯:正如你已經注意到了,你也可以嘗試設置MarginContentPresenter的:

<Style TargetType="ContentPresenter">           
    <Setter Property="Margin" Value="-5"/> 
</Style> 
+0

我更新了這個問題,因爲它不起作用,但是你指出了我正確的方向 - 非常感謝。如果你更新了答案,我會接受它作爲答案。 –

+0

我更新了答案。你在哪個版本的Windows上? – mm8

+0

我使用的是Windows 10.由於所有的客戶端都運行在贏10上,所以我沒有專注於此。這應該以某種方式考慮? –

0

嘗試-5設置RowHeaderWidth="0",這是一個DataGrid屬性。

//編輯 也許別的什麼是干擾。 這裏最重要的屬性的鏈接風格你DataGridStyling Microsoft’s WPF datagrid

這裏是一個簡單的例子

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

without

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

with

正如你所看到的RowHeader不見了。

+0

不幸的是,不工作。 –

+0

我認爲我的照片沒有太好地顯示問題。問題不在於如何擺脫rowheader,而不是如何格式化columnheader,所以現在控件的空間已經剩下了。在你的例子中,淺灰線和Zwei之間應該沒有空格。 –

+0

哈哈,好的。我以爲你只是想擺脫,如果黃色區域,我看起來像一個RowHeader;) –